Page 1 of 1

Subir ficheros por FTP

Posted: Tue Nov 12, 2013 12:53 pm
by Sebastián Almirón
Hola a todos,
A ver si alguien me puede ayudar porque ando perdido. Tengo que subir unos ficheros a un servidor FTP y no consigo que funcione, a lo más que llega es a crear el archivo en el servidor, pero se queda con 0 bytes de longitud. La llamada a oFile:OpenWrite() se demora más de un minuto y se queda con permisos 644 en el servidor .
Uso Harbour (no XHarbour), no se si esto tendrá algo que ver.

Saludos

Estoy intentandolo con el siguiente código que vi por aquí:

//----------------------------------------------------------------------------//
Function FTPSendFiles( cFTPSite, aSource, aTarget, cUserFtp, cPassFtp )

Local lEnd := .f.
Local nBufSize := 2000
Local oInternet, oFTP

oInternet := TInternet():New()
if Empty( oInternet:hSession )
MsgAlert( "Sin Conexión a Internet!" )
else
oFTP := TFTP():New( cFTPSite, oInternet, Alltrim(cUserFtp),Alltrim(cPassFtp))
if Empty( oFTP:hFTP )
MsgStop( "Imposible Conectarse al Sito FTP" )
else
SendFiles( aSource, aTarget, nBufSize, lEnd, oFTP )
endif
endif

oInternet:End()

return nil
//----------------------------------------------------------------------------//
Static Function SendFiles( aSource, aTarget, nBufSize, lEnd, oFTP )

Local n
Local hSource
Local cBuffer := Space( nBufSize )
Local nBytes, nFile := 0, nTotal := 0
Local nTotSize := 0
Local oFile

for n = 1 to Len( aSource )
if ! File( aSource[ n ] )
MsgStop( "Archivo No Encontrado: " + aSource[ n ] )
exit
endif
hSource = FOpen( aSource[ n ] )
nTotSize += FSeek( hSource, 0, 2 )
FClose( hSource )
next n

for n = 1 to Len( aSource )
hSource = FOpen( aSource[ n ] )
sysrefresh()
oFile = TFtpFile():New( aTarget[ n ], oFTP )
oFile:OpenWrite() // Esto tarda mas de un minuto ---------------------------------------------
FSeek( hSource, 0, 0 )
nFile := 0
do while ( nBytes := FRead( hSource, @cBuffer, nBufSize ) ) > 0 .and. ! lEnd
oFile:Write( SubStr( cBuffer, 1, nBytes ) )
sysrefresh()
enddo
FClose( hSource )
oFile:End()
sysrefresh()
if lEnd
exit
endif
next n
Return nil

Re: Subir ficheros por FTP

Posted: Tue Nov 12, 2013 2:07 pm
by cuatecatl82
Buen dia Sebastian:

Checa este link, aquí hay un programa para subir y bajar archivos FTP con código fuente, e mi me sirvio y es 100% funcional:

http://javierlloris.blogspot.com.es/201 ... tp_25.html

Saludos.. :lol: :lol:

Re: Subir ficheros por FTP

Posted: Tue Nov 12, 2013 7:47 pm
by omarelunico
Si tienes el control del servidor linux, otra manera podría ser por SSH
pscp es un ejecutable que realiza una conexión ssh con un servidor y se puede transferir archivos
pscp lo puedes descargar de http://www.chiark.greenend.org.uk/~sgta ... nload.html y copiarlo a c:\windows\system32

la orden a incluir en el fivewin es la siguiente. como ejemplo mi archivo se llama archivo.zip , cusuario y cclave es un usuario cualquier del linux con acceso a SSH


ShellExecute(,"open","c:\windows\system32\pscp.exe"," -l "+cUsuario+" -pw "+cClave+"d:\carpeta\archivo.zip "+cuser+"@"+DireccionIPServidorLinux+":/home/usuario/",,)

Re: Subir ficheros por FTP (SOLUCIONADO)

Posted: Fri Nov 15, 2013 8:38 am
by Sebastián Almirón
Gracias por la ayuda, finalmente lo he implementado utilizando el enlace de cuatecatl82, aprovechando la clase ServicesFTP de Jose Javier Lloris y funciona bien.

Saludos

Re: Subir ficheros por FTP

Posted: Fri Nov 15, 2013 4:20 pm
by cuatecatl82
Si es bastante buena, fucional y practica, checa este enlace, talvéz pueda servirte para hacer más funcional tu proyecto:

http://forums.fivetechsupport.com/viewt ... =6&t=27510


Saludos..