Subir y descargar archivos en una FTP
- TOTOVIOTTI
- Posts: 470
- Joined: Fri Feb 05, 2010 11:30 am
- Location: San Francisco - Córdoba - Argentina
Subir y descargar archivos en una FTP
Hola gente!
Estoy desempolvando unas funciones que tenía para subir y descargar archivos desde una FTP (usando la clase tFtp)
Si bien hace el proceso correctamente de subida, no me tira error alguno, pero tampoco graba en
la FTP, revisé los permisos de la carpeta, he retomado una que ya usaba hace varios años atrás, pero sin resultados.
Mi función de enviar es:
IF FTPSendFiles({"c:\archivo.txt"}, {"/libreria/" + "archivo.txt"})
MsgInfo("Pudo enviar")
ELSE
MsgStop("No pudo enviar")
ENDIF
..
..
RETURN NIL
//----------------------------------------------------------------------------//
STAT FUNC FTPSendFiles(aSource,aTarget)
*SUBIR ACTUALIZACIÓN
LOCAL oInternet,oFtp,RETORNO:=.F.,aFiles:={}
LOCAL accesoBD:={"ftp.miweb.com.ar","miusuario","miclave"}
oInternet:=tInternet():New()
oFtp:=tFtp():New(accesoBD[1],oInternet,accesoBD[2],accesoBD[3])
IF !Empty(oFtp:hFtp)
RETORNO:=SendFiles(aSource,aTarget,oFtp)
oFtp:End()
oInternet:End()
ENDIF
RETURN(RETORNO)
//----------------------------------------------------------------------------//
STAT FUNC SendFiles(aSource,aTarget,oFtp)
*ENVIAR ARCHIVOS
LOCAL n,hSource,cBuffer:=Space(4096),nBytes,nFile:=0,nTotal:=0,nTotSize:=0,oFile
FOR n:=1 to LEN(aSource)
hSource:=FOpen(aSource[n])
nTotSize+=FSeek(hSource,0,2)
FClose(hSource)
NEXT
FOR n:=1 TO LEN(aSource)
hSource:=FOpen(aSource[n])
oFile:=TFtpFile():New(aTarget[n],oFtp)
oFile:OpenWrite()
FSeek(hSource,0,0)
nFile:=0
WHILE (nBytes:=FRead(hSource,@cBuffer,4096))>0
nTotal+=nBytes
oFile:Write(SubStr(cBuffer,1,nBytes))
ENDDO
FClose(hSource)
oFile:End()
NEXT
RETURN nTotal=nTotSize
Alguno me puede dar una idea porque no funciona?
Muchas gracias!!
Roberto
PD: Usando FW Diciembre 2024
Estoy desempolvando unas funciones que tenía para subir y descargar archivos desde una FTP (usando la clase tFtp)
Si bien hace el proceso correctamente de subida, no me tira error alguno, pero tampoco graba en
la FTP, revisé los permisos de la carpeta, he retomado una que ya usaba hace varios años atrás, pero sin resultados.
Mi función de enviar es:
IF FTPSendFiles({"c:\archivo.txt"}, {"/libreria/" + "archivo.txt"})
MsgInfo("Pudo enviar")
ELSE
MsgStop("No pudo enviar")
ENDIF
..
..
RETURN NIL
//----------------------------------------------------------------------------//
STAT FUNC FTPSendFiles(aSource,aTarget)
*SUBIR ACTUALIZACIÓN
LOCAL oInternet,oFtp,RETORNO:=.F.,aFiles:={}
LOCAL accesoBD:={"ftp.miweb.com.ar","miusuario","miclave"}
oInternet:=tInternet():New()
oFtp:=tFtp():New(accesoBD[1],oInternet,accesoBD[2],accesoBD[3])
IF !Empty(oFtp:hFtp)
RETORNO:=SendFiles(aSource,aTarget,oFtp)
oFtp:End()
oInternet:End()
ENDIF
RETURN(RETORNO)
//----------------------------------------------------------------------------//
STAT FUNC SendFiles(aSource,aTarget,oFtp)
*ENVIAR ARCHIVOS
LOCAL n,hSource,cBuffer:=Space(4096),nBytes,nFile:=0,nTotal:=0,nTotSize:=0,oFile
FOR n:=1 to LEN(aSource)
hSource:=FOpen(aSource[n])
nTotSize+=FSeek(hSource,0,2)
FClose(hSource)
NEXT
FOR n:=1 TO LEN(aSource)
hSource:=FOpen(aSource[n])
oFile:=TFtpFile():New(aTarget[n],oFtp)
oFile:OpenWrite()
FSeek(hSource,0,0)
nFile:=0
WHILE (nBytes:=FRead(hSource,@cBuffer,4096))>0
nTotal+=nBytes
oFile:Write(SubStr(cBuffer,1,nBytes))
ENDDO
FClose(hSource)
oFile:End()
NEXT
RETURN nTotal=nTotSize
Alguno me puede dar una idea porque no funciona?
Muchas gracias!!
Roberto
PD: Usando FW Diciembre 2024
- TOTOVIOTTI
- Posts: 470
- Joined: Fri Feb 05, 2010 11:30 am
- Location: San Francisco - Córdoba - Argentina
Re: Subir y descargar archivos en una FTP
Hola gente...
nadie utiliza FTP?
Que otra alternativa puedo utilizar para actualizar mis sistemas?
Hasta ahora, utilizo subir mi ejecutable comprimido a una tabla de una BD MySql,
pero, ante el reclamo de mi proveedor, tengo que cambiar el formato.
Que puedo utilizar para subir algún archivo y luego descargarlo desde mi sistema?
Muchas gracias!
Roberto
nadie utiliza FTP?
Que otra alternativa puedo utilizar para actualizar mis sistemas?
Hasta ahora, utilizo subir mi ejecutable comprimido a una tabla de una BD MySql,
pero, ante el reclamo de mi proveedor, tengo que cambiar el formato.
Que puedo utilizar para subir algún archivo y luego descargarlo desde mi sistema?
Muchas gracias!
Roberto
Re: Subir y descargar archivos en una FTP
https://fivewin.com.br/index.php?/topic ... ad-upload/
https://fivewin.com.br/index.php?/topic ... s-via-ftp/
https://fivewin.com.br/index.php?/topic ... vo-no-ftp/
viewtopic.php?p=139638#p139638
https://fivetechsoft.com/forums/viewtopic.php?t=20727
http://www.pctoledo.com.br/forum/viewto ... =4&t=13310
Regards, saludos.
https://fivewin.com.br/index.php?/topic ... s-via-ftp/
https://fivewin.com.br/index.php?/topic ... vo-no-ftp/
viewtopic.php?p=139638#p139638
https://fivetechsoft.com/forums/viewtopic.php?t=20727
http://www.pctoledo.com.br/forum/viewto ... =4&t=13310
Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
- TOTOVIOTTI
- Posts: 470
- Joined: Fri Feb 05, 2010 11:30 am
- Location: San Francisco - Córdoba - Argentina
Re: Subir y descargar archivos en una FTP
Gracias!
Revisaré estos hilos para ver si puedo hacer funcionar...
Es raro, porque esto funcionaba... a no ser que sea problemas de mi servicio,
pero estuvimos revisando y no tengo forma de probarlo.
Revisaré estos hilos para ver si puedo hacer funcionar...
Es raro, porque esto funcionaba... a no ser que sea problemas de mi servicio,
pero estuvimos revisando y no tengo forma de probarlo.
Re: Subir y descargar archivos en una FTP
Estimado TOTOVIOTTI
Utilizo éste código:
Para comprobar podes usar éste script
o desde el explorador de windows escribir: FTP://ftpsite
Utilizo éste código:
Code: Select all | Expand
oCon:=Turl():New("ftp://"+FTPUser+":"+FTPPass+"@"+cftpsite)
oFTP:=TIpClientFtp():New(oCon, .f.)
oFTP:open()
oFtp:UploadFile("D:\SISTEMAS\DATA\BASE.DBF","SISTEMAS\DATA\BASE.DBF")
oFtp:close()
Code: Select all | Expand
@echo off
echo user ftpuser> ftpcmd.dat
echo ftppass>> ftpcmd.dat
echo bin>> ftpcmd.dat
echo put base.dbf>> ftpcmd.dat
echo quit>> ftpcmd.dat
ftp -n -s:ftpcmd.dat ftpsite
del ftpcmd.dat
PAUSE
Saludos,
Adhemar Cuéllar
- TOTOVIOTTI
- Posts: 470
- Joined: Fri Feb 05, 2010 11:30 am
- Location: San Francisco - Córdoba - Argentina
Re: Subir y descargar archivos en una FTP
Hice el UpLoadFile y me da este error:
IF !oFtp:UpLoadFile( cFileOri, cFileDes )
msginfo(oFtp:LastErrorMessage())
endif
"Closed socket"
Entonces estimo que debe ser un problema de mi router? O será de mi proveedor
de la ftp?
No entiendo mucho de hardware...
Roberto
IF !oFtp:UpLoadFile( cFileOri, cFileDes )
msginfo(oFtp:LastErrorMessage())
endif
"Closed socket"
Entonces estimo que debe ser un problema de mi router? O será de mi proveedor
de la ftp?
No entiendo mucho de hardware...
Roberto
Re: Subir y descargar archivos en una FTP
Hola Roberto buenos días como estas?
Alguna vez lo intentamos de esa manera, pero la verdad tampoco lo logramos, lo resolvimos subiendo el ejecutable, desde nuestra pagina web mediente https, para la descarga creamos un endpoint que se encarga de gestionar la descarga, como cadena de texto, funciona relativamente bien, salvo algunas maquinas de nuestros clientes que tienen antivirus cansones como el Norton entre otros jejejejejeHola gente...
nadie utiliza FTP?
Que otra alternativa puedo utilizar para actualizar mis sistemas?
Hasta ahora, utilizo subir mi ejecutable comprimido a una tabla de una BD MySql,
pero, ante el reclamo de mi proveedor, tengo que cambiar el formato.
Que puedo utilizar para subir algún archivo y luego descargarlo desde mi sistema?
Code: Select all | Expand
Function descargarInstalador()
Local hInfo := {=>}
Local lSiDescargo := .F.
Local cExe := space(0)
Local rutaExeTm := ".\temp\"
Local oHandle
Local hExe := {=>}
IF !IsInternet()
aInfo := {.F.,"No Se Pudo Comprobar La Conexión a Internet"}
ELSE
user := "elusuario"
pass := "lacontraseña"
cBas64 := hb_base64encode(user+":"+pass,len(user+":"+pass))
hInfo["user"] := getenv("USERNAME")
hInfo["machine"] := NetName()
hInfo["usua"] := user
hInfo["pass"] := pass
cInfo := hb_jsonEncode( hInfo )
ohttp := CreateObject( "MSXML2.XMLHTTP" )
ohttp:Open( "POST" ,"https://laurldelendpoint.com",.F.)
oHttp:SetRequestHeader("cache-control", "no-cache")
ohttp:SetRequestHeader("content-type", "application/json" )
ohttp:SetRequestHeader("authorization", "Basic "+cBas64 )
TRY
ohttp:Send( cInfo )
CATCH
aInfo := {.F.,"No Se Pudo Enviar Documento JSON"}
END
response:=ohttp:responseText
aHasRes := hash()
hb_jsondecode(response ,@aHasRes)
if valtype(aHasRes)="U"
hExe["descargo"] := .F.
hExe["error"] := "No se pudo descargar instalador"
else
rutaExeTm += aHasRes["nombre_exe"]
cExe := hb_base64decode(aHasRes["elexe"])
oHandle := FCreate(rutaExeTm)
FWrite(oHandle,cExe,Len(cExe))
FClose(oHandle)
hExe["descargo"] := .T.
hExe["error"] := ""
hExe["ruta_descarga"] := rutaExeTm
endif
ENDIF
return hExe
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
[email protected]
[email protected]
[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
[email protected]
[email protected]
[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]
- TOTOVIOTTI
- Posts: 470
- Joined: Fri Feb 05, 2010 11:30 am
- Location: San Francisco - Córdoba - Argentina
Re: Subir y descargar archivos en una FTP
Buenísimo Leandro!
Y para subir el archivo? Lo suben a mano o tienen un proceso automatizado?
Gracias
Roberto
Y para subir el archivo? Lo suben a mano o tienen un proceso automatizado?
Gracias
Roberto
-
russimicro
- Posts: 413
- Joined: Sun Jan 31, 2010 3:30 pm
- Location: Bucaramanga - Colombia
Re: Subir y descargar archivos en una FTP
Buen dia...
Recomiendo ver chilkat... https://www.example-code.com/foxpro/default.asp
Me ha servido para,, crear y leer xml, firmar y enviar electrónicas DIAN, enviar correos, subir y bajar via ftp, api rest ...
ejp :
Recomiendo ver chilkat... https://www.example-code.com/foxpro/default.asp
Me ha servido para,, crear y leer xml, firmar y enviar electrónicas DIAN, enviar correos, subir y bajar via ftp, api rest ...
ejp :
Code: Select all | Expand
function subirFtp()
LOCAL loFtp
LOCAL lnSuccess
LOCAL lcLocalPath
LOCAL lcRemoteFilename
loFtp = CreateObject('Chilkat.Ftp2')
loFtp.Hostname = "ftp.someFtpServer.com"
loFtp.Username = "my_ftp_username"
loFtp.Password = "my_ftp_password"
* Connect and login to the FTP server.
lnSuccess = loFtp.Connect()
IF (lnSuccess <> 1)
? loFtp.LastErrorText
RELEASE loFtp
CANCEL
ENDIF
* Change to the remote directory where the file will be uploaded.
lnSuccess = loFtp.ChangeRemoteDir("junk")
IF (lnSuccess <> 1)
? loFtp.LastErrorText
RELEASE loFtp
CANCEL
ENDIF
* Upload a file.
lcLocalPath = "c:/temp/hamlet.xml"
lcRemoteFilename = "hamlet.xml"
lnSuccess = loFtp.PutFile(lcLocalPath,lcRemoteFilename)
IF (lnSuccess <> 1)
? loFtp.LastErrorText
RELEASE loFtp
CANCEL
ENDIF
lnSuccess = loFtp.Disconnect()
? "File Uploaded!"
RELEASE loFtp
RETURN
//******************************
FUNCTION bajarFtp()
LOCAL loFtp
LOCAL lnSuccess
LOCAL lcLocalFilename
LOCAL lcRemoteFilename
loFtp = CreateObject('Chilkat.Ftp2')
ftpEventHandler = CreateObject("ftpEvents")
EventHandler(loFtp,ftpEventHandler)
loFtp.Hostname = "ftp.someFtpServer.com"
loFtp.Username = "myLogin"
loFtp.Password = "myPassword"
* Connect and login to the FTP server.
lnSuccess = loFtp.ConnectOnly()
IF (lnSuccess <> 1)
? loFtp.LastErrorText
RELEASE loFtp
CANCEL
ENDIF
lnSuccess = loFtp.LoginAfterConnectOnly()
IF (lnSuccess <> 1)
? loFtp.LastErrorText
RELEASE loFtp
CANCEL
ENDIF
* Change to the remote directory where the file is located.
* This step is only necessary if the file is not in the home directory
* of the FTP account.
lnSuccess = loFtp.ChangeRemoteDir("junk")
IF (lnSuccess <> 1)
? loFtp.LastErrorText
RELEASE loFtp
CANCEL
ENDIF
lcLocalFilename = "c:/temp/hamlet.xml"
lcRemoteFilename = "hamlet.xml"
* Ensure that we get PercentDone callbacks.
loFtp.AutoGetSizeForProgress = 1
* Download the file.
lnSuccess = loFtp.GetFile(lcRemoteFilename,lcLocalFilename)
IF (lnSuccess <> 1)
? loFtp.LastErrorText
RELEASE loFtp
CANCEL
ENDIF
lnSuccess = loFtp.Disconnect()
? "File Downloaded!"
RELEASE loFtp
RETURN
-
postinelli
- Posts: 150
- Joined: Tue Jul 15, 2008 7:12 pm
- Location: Argentina
Re: Subir y descargar archivos en una FTP
asi lo hago yo y funciona correctamente
Code: Select all | Expand
//----------------------------------------------------------------------------//
Function FTPSendFiles( cFTPSite, aSource, aTarget, cUserFtp, cPassFtp )
Local lEnd := .f.
Local nBufSize := 2000
Local oInternet, oFTP
MsgRun( "Conectando al Sitio FTP...", "Espere...",;
{ || oInternet := TInternet():New(),;
If( Empty( oInternet:hSession ),;
MsgAlert( "Sin Conexión a Internet!" ),),;
oFTP := TFTP():New( cFTPSite, oInternet, Alltrim(cUserFtp),Alltrim(cPassFtp) ) } )
if Empty( oFTP:hFTP )
MsgStop( "Imposible Conectarse al Sito FTP!" )
return nil
endif
SendFiles( aSource, aTarget, nBufSize, lEnd, oFTP )
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
for n = 1 to Len( aSource )
hSource = FOpen( aSource[ n ] )
oFile = TFtpFile():New( aTarget[ n ], oFTP )
oFile:OpenWrite()
FSeek( hSource, 0, 0 )
nFile := 0
while ( nBytes := FRead( hSource, @cBuffer, nBufSize ) ) > 0 .and. ! lEnd
oFile:Write( SubStr( cBuffer, 1, nBytes ) )
end
FClose( hSource )
oFile:End()
if lEnd
exit
endif
next
Return nil
//----------------------------------------------------------------------------//
- TOTOVIOTTI
- Posts: 470
- Joined: Fri Feb 05, 2010 11:30 am
- Location: San Francisco - Córdoba - Argentina
Re: Subir y descargar archivos en una FTP
Gracias estimados!!
Revisaré ambos casos y veo que pasa!
Muchas gracias
Roberto
Revisaré ambos casos y veo que pasa!
Muchas gracias
Roberto
- albeiroval
- Posts: 400
- Joined: Tue Oct 16, 2007 5:51 pm
- Location: Barquisimeto - Venezuela
Re: Subir y descargar archivos en una FTP
Saludos,
Yo hize una libreria que trabaja con una dll net, para subir y descargar archivos en SFTP con fivewin, si alguien le interesa puede contactarme al privado
albeiroval at gmail.
Yo hize una libreria que trabaja con una dll net, para subir y descargar archivos en SFTP con fivewin, si alguien le interesa puede contactarme al privado
albeiroval at gmail.
Re: Subir y descargar archivos en una FTP
Albeiro, funciona de Maravilla,
gracias por desarrollar el wrapper para harbour
ya te envié una aportación !!!!
saludos !!!
gracias por desarrollar el wrapper para harbour
ya te envié una aportación !!!!
saludos !!!
Code: Select all | Expand
#include "fivewin.ch"
/*
Proyecto para subir archivos al servidor via SFTP NET
By SysCtrl Software
15-jul-2025
*/
FUNCTION Main()
MsgRun("Subiendo Archivo", "Por Favor Espere ...", {|| Enviar()})
RETURN Nil
STATIC FUNCTION Enviar()
LOCAL lOk
LOCAL cHost := "95.111.250.43"
LOCAL cUser := "root"
LOCAL cPasword := "SysCtrl123"
LOCAL cFile := "bin.zip"
LOCAL cRuta := "/www/html_public/descargas/" + cFile
lOk := SftpUploadNet( cHost, 22, cUser, cPasword, cFile, cRuta )
if lOk
? "Envio Correcto"
else
? "Error envio"
endif
RETURN NIL
Cesar Cortes Cruz
SysCtrl Software
Mexico
' Sin +- FWH es mejor "
SysCtrl Software
Mexico
' Sin +- FWH es mejor "
- albeiroval
- Posts: 400
- Joined: Tue Oct 16, 2007 5:51 pm
- Location: Barquisimeto - Venezuela
Re: Subir y descargar archivos en una FTP
Cesar, muchas gracias estimandoAlbeiro, funciona de Maravilla,
gracias por desarrollar el wrapper para harbour
ya te envié una aportación !!!!