FTP en WVista SIIIIII!!! en WXP NOOOOOoooo!

FTP en WVista SIIIIII!!! en WXP NOOOOOoooo!

Postby RodolfoRBG » Sun Sep 18, 2011 2:25 am

Hola mis cuates,

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.
Last edited by RodolfoRBG on Sun Sep 18, 2011 4:43 pm, edited 1 time in total.
RodolfoRBG
FWH 1307, xHarbour123 BCC582
rodolfoerbg@gmail.com
User avatar
RodolfoRBG
 
Posts: 257
Joined: Tue May 16, 2006 4:46 pm
Location: San Luis Potosi, SLP, Mexico

Re: FTP en WVista SIIIIII!!! en WXP NOOOOOoooo!

Postby roberio » Sun Sep 18, 2011 4:39 pm

alternativa
Code: Select all  Expand view

UploadFtp("c:\temp\clientes.txt")
DownloadFtp("clientes.txt")
DeleteFtp("clientes.txt")

*-----------------------------------------------------
Function DownloadFtp(cFile)
   oText=TTxtFile():New("c:\script.txt")
   oText:Open()
   oText:Add("SeuLogin")
   oText:Add("SuaSenha")
   oText:Add("binary")
   oText:Add("get /www/test/"+cFile+" c:\clientes.txt") // pega o arquivo do ftp(pasta /www/test/) e grava no C: com o nome clientes.txt
   oText:Add("bye")
   oText:Add("quit")
   oText:Close()

   MyRun("ftp -s:c:\script.txt ftp.teste.net.br") // seu servidor de ftp nessa linha

   FERASE( "c:\script.txt" )
Return nil
*-----------------------------------------------------
Function UploadFtp(cFile)
 FERASE("c:\script.txt" )

   oText=TTxtFile():New("c:\script.txt")
   oText:Open()
   oText:Add("SeuLogin")
   oText:Add("SuaSenha")
   oText:Add("binary")
   oText:Add("cd /www/test") //abri pasta para upload
   oText:Add("put "+cFile)   // envia o arquivo para para pasta aberta do ftp
   oText:Add("bye")
   oText:Add("quit")
   oText:Close()

   MyRun("ftp -s:c:\script.txt ftp.teste.net.br")

 FERASE("c:\script.txt" )

Return nil
*-----------------------------------------------------
Function DeleteFtp(cFile)
   oText=TTxtFile():New("c:\script.txt")
   oText:Open()
   oText:Add("SeuLogin")
   oText:Add("SuaSenha")
   oText:Add("binary")
   oText:Add("delete /www/test/"+cFile) deleta o arquivo da pasta /www/test do seu ftp
   oText:Add("bye")
   oText:Add("quit")
   oText:Close()

   MyRun("ftp -s:c:\script.txt ftp.teste.com.br")

   FERASE( "c:\script.txt" )
Return nil

//----------------------------------------------------------*--------------------------------
Function MYRUN( cComando )
Local oShell, RET

  oShell := CreateObject( "WScript.Shell" )
  RET := oShell:Run( "%comspec% /c " + cComando, 0, .T. )
  oShell := NIL

Return iif( RET = 0, .T., .F. )
 

espero que sirva de ayuda
User avatar
roberio
 
Posts: 27
Joined: Fri Jul 22, 2011 4:04 am


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 84 guests