Buenas tardes
Queria saber si existe alguna forma de subir archivos via ftp, desde nuestros sistemas
xHarbour + FiveWin
Gracias
Buenas tardes
Queria saber si existe alguna forma de subir archivos via ftp, desde nuestros sistemas
xHarbour + FiveWin
Gracias
Olá Luis,
Tem uma solução do BielSys que uso há algum tempo e funciona bem para atualização via FTP. Veja no link http:/bielsys.blogspot.com.br - no titulo "actualización automática de aplicaciones via FTP". Lá você vai encontrar os fontes também.
Até mais.
Oliveiros Junior
LuisPonce wrote:Buenas tardes
Queria saber si existe alguna forma de subir archivos via ftp, desde nuestros sistemas
xHarbour + FiveWin
Gracias
Un Saludo
Carlos G.
FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home
Buenos dias
Ok, gracias
Oliveiros Junior, bajé el ejemplo updftp2.prg y .exe, al compilarlo me da un error :
┌────────────────────────────────────────────────────────────────────────────┐
│ FiveWin for xHarbour 8.02 - Feb. 2008 xHarbour development power │▄
│ (c) FiveTech, 1993-2008 for Microsoft Windows 95/98/NT/2000/ME/XP/Vista │█
└────────────────────────────────────────────────────────────────────────────┘█
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
Compiling...
xHarbour Compiler build 1.1.0 (SimpLex)
Copyright 1999-2008, http://www.xharbour.org http://www.harbour-project.org/
Compiling 'updftp2.prg' and generating preprocessed output to 'updftp2.ppo'...
updftp2.prg(28) Warning W0001 Ambiguous reference: 'ATIME'
updftp2.prg(29) Warning W0002 Ambiguous reference, assuming memvar: 'ATIME'
updftp2.prg(29) Warning W0002 Ambiguous reference, assuming memvar: 'ATIME'
updftp2.prg(29) Warning W0002 Ambiguous reference, assuming memvar: 'ATIME'
updftp2.prg(30) Warning W0002 Ambiguous reference, assuming memvar: 'ATIME'
updftp2.prg(30) Warning W0002 Ambiguous reference, assuming memvar: 'ATIME'
updftp2.prg(30) Warning W0002 Ambiguous reference, assuming memvar: 'ATIME'
updftp2.prg(34) Warning W0001 Ambiguous reference: 'CTIME2'
updftp2.prg(38) Warning W0001 Ambiguous reference: 'CTIME2'
Lines 228, Functions/Procedures 5
Generating C source output to 'updftp2.c'...
Done.
Borland C++ 5.5 for Win32 Copyright (c) 1993, 2000 Borland
updftp2.c:
Warning W8075 updftp2.prg 223: Suspicious pointer conversion in function HB_FUN_
RESTOFILE
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: Unresolved external '_HB_FUN_HB_ISCHAR' referenced from C:\FWH\HIFI\UPDFT
P2.OBJ
* There are errors
C:\FWH\HIFI>
Falta al parecer una function de xharbour HB_ISCHAR
Carlos G.
Gracias Esperare a mas tarde
LuisPonce wrote:Buenas tardes
Queria saber si existe alguna forma de subir archivos via ftp, desde nuestros sistemas
xHarbour + FiveWin
Gracias
... If lConectaFTP( AMPAARRA )
oTdbfREbFAC:Gotop()
While oTdbfREbFAC:Locate( , , lRest ) .and. ValType( AMPAARRA[1][1][1] ) = "O"
lRest := .T.
oTdbfREbFAC:Load()
msgnowait2( AMPAARRA, "Copiant PDF anònim a FTP del rebut: " + allTrim(Str( oTdbfRebFac:Numerebu, 12, 0)) + " -Ok: " + allTrim(Str(nOk,5,0)) + " -Errors: " + allTrim(Str(nErrores, 5,0)), "Cancel·lar..." + Str( nContador --, 5,0) )
Traza( 1, "FTP-oTdbfRebFac:", oTdbfRebFac:Numerebu)
//If RebutToFTP( AMPAARRA, oTdbfRebFac:Numerebu, .F. )
If SubeFichero( AMPAARRA, cPathREBUT( AMPAARRA, .T. ) + Base10to36(oTdbfRebFac:numeRebu) + ".pdf", .F. )
nOk ++
oTdbfREbFAC:Dataaweb := DToS( Date() ) + " " + Time()
oTdbfREbFAC:Save()
Else
nErrores ++
GenError( 3, GetTrad("Error al copiar el rebut:" ) + Str( oTdbfRebFac:Numerebu, 10, 0 ) + "-" + Base10to36(oTdbfRebFac:numeRebu) + ".pdf")
//AADD( aFTPError, oTdbfRebFac:Numerebu)
Traza2( cFileLog, CRLF + DToS( Date() ) + "_" + Left(StrTran( Time(), ":" ), 6) + "-" + GetTrad("Error al copiar el rebut:" ) + Str( oTdbfRebFac:Numerebu, 10, 0 ) + "-" + Base10to36(oTdbfRebFac:numeRebu) + ".pdf")
EndIf
SysRefresh()
End
CierraFTP()
EndIf.../*----------------------------------------------------------------------------------------*/
* Basado en el siguiente trabajo: *
* =============================== *
/*----------------------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------------------*/
* *
* Archivo: Proc9991.PRG *
* Descripcion: Subir ficheros del servidor FTP *
* Fecha: 11-03-2012 *
* Autor: Jose Javier LLoris Roig *
* Web: http://javierlloris.blogspot.com.es/ *
* Msn: fwh<!-- e --><a href="mailto:-jll@hotmail.es">-jll@hotmail.es</a><!-- e --> *
* *
* Libreria: FWH/FWHX 11.09 *
* Harbour: Harbour 5.8.2 release 20120330 *
* Compilador: Borland C++ 5.8.2 *
* S.O: XP/Win7 no probado en otros S.O *
* *
* Copyright (C) 2012 José Javier Lloris Roig *
* Correo electrónico: fwh<!-- e --><a href="mailto:-jll@hotmail.es">-jll@hotmail.es</a><!-- e --> *
* Web: http://javierlloris.blogspot.com.es/ *
* *
* Este programa es software libre: usted puede redistribuirlo y/o modificarlo bajo los *
* términos de la Licencia Pública General GNU publicada por la Fundación para el *
* Software Libre, ya sea la versión 3 de la Licencia, o (a su elección) cualquier *
* versión posterior. *
* *
* Este programa se distribuye con la esperanza de que sea útil, pero SIN GARANTÍA *
* ALGUNA; ni siquiera la garantía implícita MERCANTIL o de APTITUD PARA UN PROPÓSITO *
* DETERMINADO. *
* *
* Consulte los detalles de la Licencia Pública General GNU para obtener una información*
* más detallada. *
* *
* Debería haber recibido una copia de la Licencia Pública General GNU *
* junto a este programa. En caso contrario, consulte http://www.gnu.org/licenses. *
/*----------------------------------------------------------------------------------------*/
#Include "FiveWin.CH"
STATIC oFTP
STATIC lFTP := .F.
STATIC aFiles
STATIC nSizeFiles
/*------------------------------------------------------------------------------*/
FUNCTION oGetoFTP()
Return oFTP
/*------------------------------------------------------------------------------*/
FUNCTION lIsOpenFTP()
Return lFTP
/*------------------------------------------------------------------------------*/
Function CierraFTP()
Traza( 1, "CierraFTP()" )
If lIsOpenFTP()
oFTP:Close()
EndIf
DeleteObject( oFTP )
oFTP := NIL
lFTP := .F.
Return Nil
/*------------------------------------------------------------------------------*/
Function lConectaFTP( AMPAARRA )
/*------------------------------------------------------------------------------*/
Local lOk := .F.
Local cPasswordFTP := RTrim( AMPAarra[2][3][1][19] ) + Space(25)
// comprobamos si tenemos conexion a internet
IF !IsInternet()
MsgAlert( "Compruebe la conexión a Internet.", "Atención" )
Return (lFTP := .F.)
END
aFiles := {}
nSizeFiles := 0
/* Comprobamos que en la BD Ftp.DBF estan los datos introducidos para poder */
/* acceder al servidor FTP */
IF EMPTY( AMPAarra[2][3][1][17] ) .OR.; // Nombre del servidor FTP
EMPTY( AMPAarra[2][3][1][18] ) .OR.; // Nombre del usuario FTP
EMPTY( AMPAarra[2][3][1][19] ) .OR.; // Password del usuario del FTP
EMPTY( AMPAarra[2][3][1][20] ) // Nombre de la carpeta destino en el servidor FTP
MsgAlert( "Debe de configurar el programa para poder" +CRLF+;
"acceder al servidor FTP. Entre en el apartado" +CRLF+;
"Configurar programa y introduzca la información"+CRLF+;
"requerida y vuelva a intentarlo." +CRLF+CRLF+;
"Pulse el boton de aceptar para continuar.", "ERROR!!" )
Return (lFTP := .F.)
END
MsgGet( GetTrad("Atenció!"), RTrim( AMPAarra[2][3][1][17] ) + "-" + RTrim( AMPAarra[2][3][1][18] ) + "-" + GetTrad("Indiqui el Password:"), @cPasswordFTP )
Traza( 1, "RTrim( AMPAarra[2][3][1][17] )=", RTrim( AMPAarra[2][3][1][17] ) )
Traza( 1, "RTrim( AMPAarra[2][3][1][18] )=", RTrim( AMPAarra[2][3][1][18] ) )
Traza( 1, "cPasswordFTP=", cPasswordFTP )
Traza( 1, "AMPAarra[2][3][1][20]=", AMPAarra[2][3][1][20] )
Traza( 1, "AMPAarra[2][3][1][21]=", AMPAarra[2][3][1][21] )
Traza( 1, "AMPAarra[2][3][1][22]=", AMPAarra[2][3][1][22] )
Traza( 1, "AMPAarra[2][3][1][23]=", AMPAarra[2][3][1][23] )
MsgRun( "Conectando con el servidor FTP",;
"Espere por Favor..." ,;
{ || oFtp := ServicesFTP():New( RTrim( AMPAarra[2][3][1][17] ) ,; // Servidor
RTrim( AMPAarra[2][3][1][18] ) ,; // Usuario
AllTrim(cPasswordFTP) , ; // RTrim( AMPAarra[2][3][1][19] ) ,; // Contraseña
AMPAarra[2][3][1][21] ,; // Permitir anonimos
AMPAarra[2][3][1][22] ,; // Tiempo de respuesta
AMPAarra[2][3][1][23] )}) // Puerto
SysRefresh()
IF (lOk := (oFtp:nError == 0))
Traza( 1, "a-oFtp:GetPath()=", oFtp:GetPath() )
/* Aqueta funció és molt important per que a més a més de carregar
fitxers en la array 'aFiles', es situa en el directori de FPT.
------------------------------------------------------------ */
CargaFiles( RTrim( AMPAarra[2][3][1][20] ) )
Traza( 1, "Connectat!!!" )
Traza( 1, "b-oFtp:GetPath()=", oFtp:GetPath() )
END
Traza( 1, "oFtp:", oFtp:nError )
Traza( 1, "lOk=", lOk )
Return ( lFTP := lOk )
/*------------------------------------------------------------------------------*/
Function SubeFichero( AMPAARRA, cFile, lMensaje )
/*------------------------------------------------------------------------------*/
/* Esta función puede usarse sola (directamente), con lo cual en ella se
realiza la conexión a FTP, o precedida del uso de lConectaFTP() y poscedida de
CierraFTP(), y en ese caso no se realizará la conexión a FTP en esta función ya que
se habrá realizado previamente en lConectaFTP().
Para controlar esta situación se usa la variable lConectadoFTPenSubefichero .
-------------------------------------------------------------------------------- */
Local lConectadoFTPenSubefichero := .F.
LOCAL cFilePut := ""
LOCAL cDirBack := ""
LOCAL lSubido := .F.
Traza( 1, "lFTP=", lFTP)
Traza( 1, "cFile=", cFile )
Traza( 1, "ValType(oFTP)=", ValType(oFTP) )
//If .Not. lFTP
If .Not. lIsOpenFTP()
If .Not. lConectaFTP( AMPAARRA )
Return .F.
EndIf
lConectadoFTPenSubefichero := .T.
EndIf
cDirBack := oFtp:GetPath()
oFtp:oFtp:Cwd( oFtp:GetPath() )
Traza( 1, "oFtp:Cwd( oFtp:GetPath() )" )
IF !Empty( cFile )
/* Buscamos si ya existe el fichero en el servidor ftp */
IF AScan( aFiles, { | aFile | Lower( aFile[1] ) == Lower( cFileNoPath( cFile ) ) } ) > 0
IF MsgNoYes( "Archivo: " + Lower( cFileNoPath( cFile ) ) + CRLF + CRLF + ;
"El fichero ya existe en su sitio FTP." + CRLF + CRLF + ;
"¿ Desea reemplazarlo ? ", "Seleccione..." )
/* Borramos el fichero */
IF !oFtp:oFtp:Dele( RTrim( cFileNoPath( cFile ) ) )
MsgAlert( "Archivo: " + RTrim( Lower( cFileNoPath( cFile ) ) ) + CRLF + CRLF + ;
"No se ha podido eliminar el archivo." + CRLF + CRLF + ;
"Pulse el boton Aceptar para continuar.", "ERROR!!" )
If lConectadoFTPenSubefichero
Traza( 1, "No es pot esborrar." )
CierraFTP()
Endif
Return( lSubido )
END
ELSE
If lConectadoFTPenSubefichero
Traza( 1, "No es còpia i es tanca." )
CierraFTP()
Endif
Return( lSubido )
END
END
END
MsgRun( "Subiendo el archivo: " + Lower( RTrim( cFileNoPath( cFile ) ) ) ,;
"Servidor Ftp: " + RTrim( AMPAarra[2][3][1][17]) + " Usuario: " + RTrim( AMPAarra[2][3][1][18] ),;
{ || cFilePut := oFtp:oFtp:MPut( cFile, oFtp:GetPath() )})
SysRefresh()
Traza( 1, "cFilePut=", cFilePut)
IF Empty( cFilePut )
lSubido := .F.
If lMensaje
MsgAlert( "Archivo: " + Lower( cFileNoPath( cFile ) ) + CRLF + CRLF + ;
"El archivo no se ha podido subir a su sitio FTP. Consulte"+ CRLF + ;
"con su administrador de sistemas o ISP los permisos" + CRLF + ;
"de escritura de su sitio FTP." + CRLF + CRLF + ;
"Pulse el boton Aceptar para continuar.", "ERROR!!" )
EndIf
ELSE
lSubido := .T.
If lMensaje
MsgInfo( "Ruta de acceso remoto predeterminado: " + oFtp:GetPath() + CRLF + ;
"Archivo: " + Lower( cFileNoPath( cFile ) ) + CRLF + CRLF + ;
"El archivo se ha subido correctamente a su sitio FTP." + CRLF + CRLF + ;
"Pulse el boton Aceptar para continuar." )
EndIf
END
If lConectadoFTPenSubefichero
Traza( 1, "Al final" )
CierraFTP()
Endif
If lsubido
Else
Inkey(1)
EndIf
Return( lSubido )
/*------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------------*/
STATIC Function CargaFiles( cPath )
/*------------------------------------------------------------------------------*/
DEFAULT cPath := "/"
aFiles := oFtp:ScrollDir( If( cPath == "/", "/", ( RTrim( cPath ) + "/" ) ) )
nSizeFiles := oFtp:nSizeFiles
Return NILUn Saludo
Carlos G.
FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home
No había tenido en cuenta que trabajas con xHarbour; lo siento.
Un Saludo
Carlos G.
FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home
Buenos dias
Gracias Carlos G. por las respuestas, creo que tengo una luz al final del tunel, encontre una libreria...
Una consulta mas:
si quisiera subir el archivo cFile:="elfile.pdf" a la carpeta "\PDFS_SELF" (fuera de la public_html) de mi servidor fpt, cual es la sintaxis que debo aplicar para indicarle a que carpeta deseo llevar el cFile ?¿
Gracias
LuisPonce wrote:Buenos dias
Gracias Carlos G. por las respuestas, creo que tengo una luz al final del tunel, encontre una libreria...
Una consulta mas:
si quisiera subir el archivo cFile:="elfile.pdf" a la carpeta "\PDFS_SELF" (fuera de la public_html) de mi servidor fpt, cual es la sintaxis que debo aplicar para indicarle a que carpeta deseo llevar el cFile ?¿
Gracias
Un Saludo
Carlos G.
FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home