Despues de muchas pruebas y consultas, finalmente logre poder subir y bajar archivos via FTP tal y como yo queria. Les avise a mis clientes que podian bajar el sistema y que se actualizaria periodicamente de forma automatica por internet, llega la fecha de la 1ra actualizacion automatica y junto con ella gran cantidad de e-mails indicandome que "se atora" el sistema al intentar bajar un archivo txt de solo 295 bytes y hasta ahorita he notado que quienes me hicieron la observacion tienen Windows XP y yo Windows Vista donde lo probe muchas veces sin ningun problema.
El lugar en donde "se atora" es en la instruccion "oFile:OpenRead()" del siguiente codigo que seguramente es el que casi todos ustedes trabajan. Alguna idea de porque si en Vista y no en XP? (aun no recibo reportes de quienes usan Windows 7 y Windows para Mac). Debo incluirles algun dll que WVista ya tiene y XP no? (Wininet.dll por ejemplo) Hasta ahora solo les incliyo FreeImage.DLL y Prev32.DLL que seguramente no tiene nada que ver con este problema.
- Code: Select all Expand view
- //Proceso para bajar el archivo
STATIC FUNCTION AI_GetFile(cSource,cFileName,nSize,oSay,oMeter,lEnd,oDlg,oFtp)
LOCAL oFile,hTarget,lValRet:=.F.
LOCAL nBufSize,cBuffer,nBytes,nTotal:=0,nFile:=0
nBufSize:=2000 //Tamaño de cada bloque a bajar
cBuffer:=SPAC(nBufSize)
hTarget:=FCreate(LOWER(M->VP[VP_DirA]+DirProc+cFileName)) //Ruta + Nombre del archivo a donde se copiara
oFile:=tFtpFile():New(cSource,oFtp)
oFile:OpenRead() //<---------------------------------------qui se atora
SysRefresh()
DO WHILE .T.
IF lEnd ; EXIT ; ENDIF
cBuffer:=oFile:Read(nBufSize) ; nBytes:=LEN(cBuffer)
IF nBytes<=0 ; EXIT ; ENDIF
FWrite(hTarget,cBuffer,nBytes)
oSay:SetText("Bytes copiados: "+ALLTRIM(STR(nTotal+=nBytes)))
oMeter:Set(nTotal) ; SysRefresh()
ENDDO
FClose(hTarget) ; oFile:END()
RETURN(nTotal>=nSize)
Cualquier comentario siempre es bien recibido.