Página 1 de 1
TAsyncDownload
Publicado: Lun Sep 11, 2017 4:58 pm
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.
Re: TAsyncDownload
Publicado: Lun Sep 11, 2017 8:38 pm
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.
Re: TAsyncDownload
Publicado: Lun Sep 11, 2017 11:19 pm
por Jose Lopez
Jose F.
Gracias por la ayuda. Voy a hacer la prueba
Re: TAsyncDownload
Publicado: Mar Sep 12, 2017 12:03 am
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.
Re: TAsyncDownload
Publicado: Mié Sep 13, 2017 9:27 pm
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
Re: TAsyncDownload
Publicado: Jue Sep 14, 2017 12:58 pm
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.