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.

TAsyncDownload

Lenguaje de progamación XBase en español
Jose Lopez
Posts: 81
Joined: Wed Jun 16, 2010 2:33 pm

TAsyncDownload

Postby Jose Lopez » Mon Sep 11, 2017 4:58 pm

Igancio,
Que falta para que pueda recibir un archivo que está en la web.
Si quieres la url real te la envio por privad.
WITH OBJECT ::oAsyncDownload1
:cURL := "http://www.paginaweb/fichero.jpg"
:Run()
If !:lSuccess
quit
EndIf
cImagen := :cBuffer
:Close()
END WITH
Gracias
Saludos.
User avatar
jfgimenez
Site Admin
Posts: 5619
Joined: Mon Apr 06, 2015 8:48 pm
Contact:

Re: TAsyncDownload

Postby jfgimenez » Mon Sep 11, 2017 8:38 pm

Pepe,

la descarga es "asíncrona", lo que significa que en realidad estás lanzando el proceso de descarga en un segundo hilo... y ya terminará cuando sea ;-)

Lo que tienes que hacer es asignar el evento OnDisconnect. Cuando se dispare ese evento significará que, o bien ya has recibido el archivo, o que se ha producido algún error. Lógicamente, al ser completamente asíncrona, te aconsejo que crees el objeto en algún formulario que no se vaya a destruir mientras dure la descarga (p.ej. el formulario principal). Si lo pones en algún formulario que se destruye antes de terminar la descarga, ésta se interrumpirá o incluso podría continuar descargando pero no podrías llegar a obtener el resultado nunca.
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Jose Lopez
Posts: 81
Joined: Wed Jun 16, 2010 2:33 pm

Re: TAsyncDownload

Postby Jose Lopez » Mon Sep 11, 2017 11:19 pm

Jose F.
Gracias por la ayuda. Voy a hacer la prueba
Jose Lopez
Posts: 81
Joined: Wed Jun 16, 2010 2:33 pm

Re: TAsyncDownload

Postby Jose Lopez » Tue Sep 12, 2017 12:03 am

Jose F.
Al final he optado por esto:
WITH OBJECT TInternet():New( Self )
IF :Open()
nTotalRegistros := Len(aDatos)
For nFor := 1 To nTotalRegistros
cURL := "http://www.zzzzzzzzzzz.com/images/productos/"+aDatos[nFor,24]
IF !Empty( hData := :OpenURL( cURL ) )
cImagen := ""
WHILE :ReadFile( hData, @cBuffer, BUFFER_LEN )
cImagen += cBuffer
ENDDO
:CloseURL( hData )
StrFile(cImagen,Application:cDirectory+"\Imagenes\"+StrZero(aDatos[nFor,4],9,0)+".jpg") //products_id
ENDIF
Next
:Close()
ENDIF
END WITH
No se si hay alguna manera mas rapida de hacerlo
Gracias.
Saludos.
User avatar
jfgimenez
Site Admin
Posts: 5619
Joined: Mon Apr 06, 2015 8:48 pm
Contact:

Re: TAsyncDownload

Postby jfgimenez » Wed Sep 13, 2017 9:27 pm

Pepe,

si es para descargar un fichero:

Code: Select all

WITH OBJECT TAsynFileDownload():New( Application:oMainform )
   :OnDisconnect := {|| MsgInfo( "Se ha descargardo el archivo." ) }
   :OnError      := {|| MsgAlert( "Error al descargar el archivo." ) }
   :cRemoteFile  := cURL
   :cLocalFile   := "archivo.ext"
   :Create()
   :Run()
END WITH
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Jose Lopez
Posts: 81
Joined: Wed Jun 16, 2010 2:33 pm

Re: TAsyncDownload

Postby Jose Lopez » Thu Sep 14, 2017 12:58 pm

Gracias Jose F.
Va perfecto.
Esta misma técnica vale para bajar varias imágenes?.
El número de imágenes depende de los pedidos.
Salu2
Pepe.

Return to “Spanish”