Página 1 de 1

Descarga de archivos desde internet

Publicado: Vie Oct 15, 2021 9:28 pm
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

Re: Descarga de archivos desde internet

Publicado: Sab Oct 16, 2021 10:07 am
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.

Re: Descarga de archivos desde internet

Publicado: Lun Oct 18, 2021 4:28 pm
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

Re: Descarga de archivos desde internet

Publicado: Sab Ene 08, 2022 8:04 am
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.

Re: Descarga de archivos desde internet

Publicado: Lun Ene 10, 2022 5:24 pm
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

Re: Descarga de archivos desde internet

Publicado: Mié Ene 12, 2022 5:51 pm
por bingen
Me alegro es una buena solución también.

Salu2