Creo que lo podrías hacer abriendo el archivo con fopen e ir leyendolo
y escribiéndolo por partes. El código que te muestro abajo es sólo una
referencia. No es mío y no recuerdo si lo saqué de Portalfox o me lo
dieron en el grupo anterior, pero funciona perfectamente para subir un
archivo a un sitio con una barra de progreso y es parte de una
aplicación que tengo funcionando. Deberás adaptarlo para escribir el
archivo localmente, pero este es el camino a seguir. Suerte!
lnlocal = fopen(o.archivo_local)
if lnlocal=-1
thisform.mensaje.caption = "¡No se pudo abrir archivo local!"
internetclosehandle(lnremote)
return .f.
endif
lnbuffersize = 1024
lnfilelength = fseek(lnlocal, 0, 2)
fseek(lnlocal, 0, 0)
lnuploaded = 0
do while lnuploaded<lnfilelength
lcbuffer = fread(lnlocal, lnbuffersize)
lnwritten = 0
internetwritefile(lnremote, lcbuffer, len(lcbuffer), @lnwritten)
lnuploaded = lnuploaded+len(lcbuffer)
thisform.mensaje.caption = "Enviando datos:
"+ltrim(str(lnuploaded*100/lnfilelength))+"%"
enddo
internetclosehandle(lnremote)
fclose(lnlocal)
Daniel Del Giudice
Santiago del Estero
Argentina