Subir ficheros por FTP

Post Reply
User avatar
Sebastián Almirón
Posts: 125
Joined: Mon Dec 12, 2005 9:56 am
Location: Moralzarzal - Spain

Subir ficheros por FTP

Post 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
User avatar
cuatecatl82
Posts: 614
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México
Contact:

Re: Subir ficheros por FTP

Post 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:
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
User avatar
omarelunico
Posts: 33
Joined: Sun May 14, 2006 7:31 am
Location: Lima - Perú

Re: Subir ficheros por FTP

Post 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/",,)
User avatar
Sebastián Almirón
Posts: 125
Joined: Mon Dec 12, 2005 9:56 am
Location: Moralzarzal - Spain

Re: Subir ficheros por FTP (SOLUCIONADO)

Post 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
User avatar
cuatecatl82
Posts: 614
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México
Contact:

Re: Subir ficheros por FTP

Post 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..
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
Post Reply