In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Descarga de archivos desde internet

Foro público de Xailer en español
Responder
ddupre
Mensajes: 329
Registrado: Lun Nov 12, 2007 3:53 pm

Descarga de archivos desde internet

Mensaje por ddupre »

Estimados,
Tengo una pequeña aplicación que cada 5 minútos descarga los archivos que se encuentren en una carpeta de un servidor en internet, a través de FTP, la cual funciona sin problemas.

Ahora me piden que relice la descarga sin FTP. Lo que me informan es que me dan una URL donde estarán los archivos a descargar y que lo haga desde ahí.

He visto que hay una clase me permitiría hacer eso (Tinternet) pero soy totalmente nulo en el tema y quisiera resolver el problema, de "algúna forma" análoga a como lo hago por FTP, en donde me siento que tengo bastante control (puedo conocer qué archivos hay para desgargar, los puedo renombrar,borrar etc. etc.).

Agradecería cualquier ayuda que me diera un poco de luz, ya sea un ejemplo, un manual que explique qué cosas debo tener en cuenta para usar dicha clase, etc.

Un saludos
Daniel
Avatar de Usuario
XeviCOMAS
Mensajes: 582
Registrado: Sab Mar 12, 2011 8:16 pm

Re: Descarga de archivos desde internet

Mensaje por XeviCOMAS »

Daniel,

Yo lo utilizo para las descargas de las actualizaciones de mis aplicaciones...

Código: Seleccionar todo

         WITH OBJECT ::oAsynFileDownload1
         :cRemoteFile  := "https://docs.google.com/uc?export=download&id=" + aSQL[1,3]
         :cLocalFile   := Application:cDirectory + "\CWinUpdate.zip"
         :OnConnect    := {|| lDownloadDrive := .T. }
         :OnDisconnect := {|| lDownloadDrive := .F. }
         :OnTotalDnLoadInfo := {|o,nProgress| ::oProgressBar1:nValue += nProgress }
         :Run()
         END WITH
         while lDownloadDrive
            ProcessMessages()
         EndDo
y me està funcionando perfectamente.


Un Saludo,
Xevi.
Un Saludo,
Xevi.
ddupre
Mensajes: 329
Registrado: Lun Nov 12, 2007 3:53 pm

Re: Descarga de archivos desde internet

Mensaje por ddupre »

Xevi,
Muchas gracias por tu ayuda.
Por lo que pude ver, la clase que tu utilizas, recibe el nombre exacto del archivo a descargar, pero en mi caso desconozco tanto los nombres como la cantidad de archivos a descargar, lo cual debo poder averiguar antes de comenzar la descarga. ¿Hay alguna forma de hacerlo con esa clase?.

Gracias
Daniel
Avatar de Usuario
bingen
Mensajes: 565
Registrado: Lun Jul 07, 2014 8:17 pm
Ubicación: Bilbao
Contactar:

Re: Descarga de archivos desde internet

Mensaje por bingen »

Podrías utilizar la maravillosa tWebDataSource que hace lo que pretendes perfectamente pero te debríand e dejar subir un pequeño módulo Php al servidor y no se si podrás.
BiSoft Desarrollo de software profesional
http://www.bisoft.es
ddupre
Mensajes: 329
Registrado: Lun Nov 12, 2007 3:53 pm

Re: Descarga de archivos desde internet

Mensaje por ddupre »

Bingen,
Muchas gracias por tu sugerencia, pero no dejan "poner" nada en el servidor.

He podido resolverlo usando la clase Tinternet.
Resultó más simble de lo pensado, dado que lo que me dejan en la URL es siembre el mismo archivo.
Y con mis escasos conocimientos lo resolví así. Seguramente habrá alguna forma mas "elegante" de hacerlo, pero al manos así funciona.

cUrl_Servidor := "https://www.servidor_del_cliente.com"

WITH OBJECT ::oInternet1

:nPort := inetHTTPS
:cAgent := "MVSC"
:cUser := ""
:cPassword := ""
:nTimeOut:= 60000

if :Open()
if (::lConnected := :Connect(cUrl_Servidor))
cUrl_Recurso :="https://www.servidor_del_cliente.com./api_gedis.php?token=e2e133cca14c5198e66fc434ede795263eab540f"
cBuffer := ''
hDatos := ::oInternet1:OpenURL( cUrl_Recurso )
while :ReadFile( hDatos, @cDatos, 65536 )
cBuffer += cDatos
end while
:Close()
endif

END WITH

Saludos
Daniel
Avatar de Usuario
bingen
Mensajes: 565
Registrado: Lun Jul 07, 2014 8:17 pm
Ubicación: Bilbao
Contactar:

Re: Descarga de archivos desde internet

Mensaje por bingen »

Me alegro es una buena solución también.

Salu2
BiSoft Desarrollo de software profesional
http://www.bisoft.es
Responder