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
Responder
Jose Lopez
Mensajes: 123
Registrado: Mié Jun 16, 2010 2:33 pm

TAsyncDownload

Mensaje por Jose Lopez »

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.
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5705
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Re: TAsyncDownload

Mensaje por jfgimenez »

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
Mensajes: 123
Registrado: Mié Jun 16, 2010 2:33 pm

Re: TAsyncDownload

Mensaje por Jose Lopez »

Jose F.
Gracias por la ayuda. Voy a hacer la prueba
Jose Lopez
Mensajes: 123
Registrado: Mié Jun 16, 2010 2:33 pm

Re: TAsyncDownload

Mensaje por Jose Lopez »

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.
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5705
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Re: TAsyncDownload

Mensaje por jfgimenez »

Pepe,

si es para descargar un fichero:

Código: Seleccionar todo

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
Mensajes: 123
Registrado: Mié Jun 16, 2010 2:33 pm

Re: TAsyncDownload

Mensaje por Jose Lopez »

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.
Responder