Valdir Posted January 31, 2014 Report Share Posted January 31, 2014 Olá pessoal... Alguém saberia me dizer o que pode causar o download de um arquivo vazio disponibilizado num FTP ? Tenho um arquivo (.ini, .txt, .bat..etc.) que mandei pro meu FTP com o objetivo de baixá-los quando necessário. Na maioria das vezes, funfa legal, porém não sei como e nem o porquê, esses arquivos são baixados vazios. Exemplo : Arquivo disponibilizado no FTP : "Teste.ini com 29 Kb. " Arquivo baixado do FTP : "Teste.ini com 0 Kb. " Obrigado Quote Link to comment Share on other sites More sharing options...
vagner Posted January 31, 2014 Report Share Posted January 31, 2014 Olá Valdir,Precisa ver como vc está baixando, se está finalizando antes de puxar todos os dados Quote Link to comment Share on other sites More sharing options...
kapiaba Posted January 31, 2014 Report Share Posted January 31, 2014 Experimente alterar o nome ftp.seuftp.com.br pelo IP e veja que bixo que dá. Outra coisa: No FTP os diretórios são separados por "/", não por "\" abs, Quote Link to comment Share on other sites More sharing options...
kapiaba Posted January 31, 2014 Report Share Posted January 31, 2014 Valdir, como eu faço isso em FiveWin? http://www.pctoledo.com.br/forum/viewtopic.php?f=43&t=14630&p=85559&hilit=ftp#p85559 Obg. abs. Quote Link to comment Share on other sites More sharing options...
Valdir Posted January 31, 2014 Author Report Share Posted January 31, 2014 Meus estimados amigos Vagner e João... Olá Valdir,Precisa ver como vc está baixando, se está finalizando antes de puxar todos os dados Se não me engano, foi você quem me passou o código abaixo. /*---- Funcao para baixar Artquivos do Ftp ----*/ Static Func PegaFtp() Local oInternet Local oFTP Local aFiles Local aFile := {} Local aDir,a oInternet := TInternet():New() oFTP := TFTP():New( "000.000.000.000", oInternet,"usuarioftp.com.br","senhaftp" ) lOk := .F. lZip := .F. If oInternet:hSession # Nil If ! Empty( oFTP:hFTP ) RecArq(oFtp,oInternet) Endif Endif oInternet:End() oFtp:End() Retu("") /*---- Funcao para Pegar o Arquivo ----*/ Static Func RecArq(oFtp,aFil) local n,nX,oFile local hTarget local cBuffer := Space( 6400 ) Local nBufSize := 6400 Local lIcon := .T. Local aVerFiles Local nSeconds Local nFeito := 0 Local wVEZ:=0 cBuffer := Space( 6400 ) nBufSize := 6400 /*---- Recebe o Arquivo do FTP ----*/ hTarget := FCreate( "C:\TEMP\TESTE.INI" ) oFile := TFtpFile():New( "testeftp/TESTE.INI", oFTP ) If oFile # Nil oFile:OpenRead() nSeconds := Seconds()+600 nTot := 0 lErro := .F. while ( nBytes := Len( cBuffer := oFile:Read( nBufSize ) ) ) > 0 FWrite( hTarget, cBuffer, nBytes ) SysRefresh() nTot += nBytes If Seconds() > nSeconds lErro := .T. Endif end FClose( hTarget ) oFile:End() If !lErro MsGRun("Recebidos "+Tran(nTot,"9999999999")+" Bytes") cArq:="TESTE.INI" /*---- Mandar para o Diretório de Copias ----*/ cBuffer := Space( 12800 ) nBufSize := 12800 hSource := FOpen( "C:\TEMP\TESTE.INI" ) hTarget := FCreate( "C:\TEMP\TESTE.INI" ) While ( nBytes := FRead( hSource, @cBuffer, nBufSize ) ) > 0 FWrite( hTarget, cBuffer, nBytes ) SysRefresh() End FClose( hSource ) FClose( hTarget ) //*---- Elimina do Diretório do FTP ----* oFtp:DeleteFile( "testeftp/TESTE.INI" ) ++nFeito Endif Endif Retu("") Valdir, como eu faço isso em FiveWin? http://www.pctoledo.com.br/forum/viewtopic.php?f=43&t=14630&p=85559&hilit=ftp#p85559 Obg. abs. Blz. meu amigo, vou testar. Obrigado pelas respostas. abração Quote Link to comment Share on other sites More sharing options...
MatheusFarias Posted January 31, 2014 Report Share Posted January 31, 2014 Function FtpUpload(cServer,cUser,cPassword,cFile,cDirectory,cUploadDirectory,oObjeto,cMensagem) Local cUrl,oUrl,oFTP,aFiles,cStr ,lRetorno Default cServer:="",cUser:="",cPassword:="",cFile:="",cDirectory:="",cUploadDirectory:="" cServer:=alltrim(cServer) cUser:=alltrim(cUser) cPassword:=alltrim(cPassword) if Empty(cServer) msgAlert("Atenção Host não informado!","Alerta") return .f. endif if Empty(cUser) msgAlert("Atenção Usuario não informado!","Alerta") return .f. endif if Empty(cPassword) msgAlert("Atenção Senha não informado!","Alerta") return .f. endif if Empty(cFile) if Empty(cDirectory) msgAlert("Atenção Arquivo ou Diretório não informado!","Alerta") return .f. endif endif if !isConnected() msgAlert("Atenção Sem Conexão com a Internet!","Alerta") return .f. endif cUrl := "ftp://" + cUser + ":" + cPassword + "@" + cServer oUrl := tUrl():New( cUrl ) oFTP := tIPClientFtp():New( oUrl, file("c:\desenv.sys") ) oFTP:nDefaultPort := 21 oFTP:nConnTimeout := 3000 oFTP:bUsePasv := .T. if At("@",cUrl)>0 oFTP:oUrl:cServer := cServer oFTP:oUrl:cUserID := cUser oFTP:oUrl:cPassword := cPassword endif if Empty(cDirectory) if !Empty(cFile) IF oFTP:Open( oFTP:oUrl ) oFTP:oUrl:cPath := cUploadDirectory Try cMensagem:="Enviando: "+cFile oObjeto:Refresh() Catch SysRefresh() end IF !oFtp:UploadFile( cFile, cFileName(cFile)) msgstop("Falha ao enviar ,"+if(!file(cFile),"Arquivo não existe","arquivo em uso")+" : "+cFile,"Erro") lRetorno := .f. ELSE oFTP:oUrl:cPath := "" lRetorno := .t. ENDIF SysWait() oFTP:Close() ELSE lRetorno:=.f. ENDIF endif Else aFiles := Directory( cDirectory ) IF Len( aFiles ) > 0 IF oFTP:Open( oFTP:oUrl ) oFTP:oUrl:cPath := cUploadDirectory FOR each cFile IN afiles Try cMensagem:="Enviando: "+cFile[ 1 ] oObjeto:Refresh() Catch SysRefresh() end IF !oFtp:UploadFile( cDirectory+cFile[ 1 ],cFile[ 1 ] ) msgstop("Falha ao enviar ,"+if(!file(cDirectory+cFile[ 1 ]),"arquivo não existe","arquivo em uso")+" : "+cDirectory+cFile[ 1 ],"Erro") ELSE oFTP:oUrl:cPath := "" lRetorno := .t. ENDIF SysWait() NEXT oFTP:Close() ELSE lRetorno := .F. ENDIF ENDIF endif if !lRetorno cStr := "Não foi possivel conectar ao Ftp:" + oURL:cServer IF oFTP:SocketCon == NIL cStr += Chr( 13 ) + Chr( 10 ) + "Conexão não iniciada!" ELSEIF InetErrorCode( oFTP:SocketCon ) == 0 cStr += Chr( 13 ) + Chr( 10 ) + "Resposta do Servidor:" + " " + oFTP:cReply ELSE cStr += Chr( 13 ) + Chr( 10 ) + "Erro na Conexão:" + " " + InetErrorDesc( oFTP:SocketCon ) ENDIF SysRefresh() msgstop(cStr,"Erro") lRetorno := .F. endif RETURN lRetorno Function FtpArquivos(cServer,cUser,cPassword,cDirectory) Local oUrl , cUrl , oFtp , cStr ,aArquivos:={} Default cServer:="",cUser:="",cPassword:="",cDirectory:="" cServer:=alltrim(cServer) cUser:=alltrim(cUser) cPassword:=alltrim(cPassword) cDirectory:=alltrim(cDirectory) if Empty(cServer) msgAlert("Atenção Host não informado!","Alerta") return {} endif if Empty(cUser) msgAlert("Atenção Usuario não informado!","Alerta") return {} endif if Empty(cPassword) msgAlert("Atenção Senha não informado!","Alerta") return {} endif if Empty(cDirectory) msgAlert("Atenção Diretório não informado!","Alerta") return {} endif if !isConnected() msgAlert("Atenção Sem Conexão com a Internet!","Alerta") return {} endif cUrl := "ftp://" + cUser + ":" + cPassword + "@" + cServer oUrl := tUrl():New( cUrl ) oFTP := tIPClientFtp():New( oUrl, file("c:\desenv.sys") ) oFTP:nDefaultPort := 21 oFTP:nConnTimeout := 3000 oFTP:bUsePasv := .T. if At("@",cUrl)>0 oFTP:oUrl:cServer := cServer oFTP:oUrl:cUserID := cUser oFTP:oUrl:cPassword := cPassword endif IF oFTP:Open( oFTP:oUrl ) oFtp:cwd(cDirectory) aArquivos := oFtp:listFiles() ELSE cStr := "Não foi possivel conectar ao Ftp:" + oURL:cServer IF oFTP:SocketCon == NIL cStr += Chr( 13 ) + Chr( 10 ) + "Conexão não iniciada!" ELSEIF InetErrorCode( oFTP:SocketCon ) == 0 cStr += Chr( 13 ) + Chr( 10 ) + "Resposta do Servidor:" + " " + oFTP:cReply ELSE cStr += Chr( 13 ) + Chr( 10 ) + "Erro na Conexão:" + " " + InetErrorDesc( oFTP:SocketCon ) ENDIF msgstop(cStr,"Erro") ENDIF SysRefresh() return aArquivos Function FtpDownload(cServer,cUser,cPassword,cLocalFile,cRemoteFile,cRemoteDir) Local oUrl , cUrl , oFtp , cStr , lRetorno Default cServer:="",cUser:="",cPassword:="",cRemoteFile:="",cRemoteDir:="",cLocalFile:="" cServer:=alltrim(cServer) cUser:=alltrim(cUser) cPassword:=alltrim(cPassword) if Empty(cServer) msgAlert("Atenção Host não informado!","Alerta") return .f. endif if Empty(cUser) msgAlert("Atenção Usuario não informado!","Alerta") return .f. endif if Empty(cPassword) msgAlert("Atenção Senha não informado!","Alerta") return .f. endif if Empty(cRemoteFile) msgAlert("Atenção Arquivo não informado!","Alerta") return .f. endif if !isConnected() msgAlert("Atenção Sem Conexão com a Internet!","Alerta") return .f. endif cUrl := "ftp://" + cUser + ":" + cPassword + "@" + cServer oUrl := tUrl():New( cUrl ) oFTP := tIPClientFtp():New( oUrl, file("c:\desenv.sys") ) oFTP:nDefaultPort := 21 oFTP:nConnTimeout := 3000 oFTP:bUsePasv := .T. if At("@",cUrl)>0 oFTP:oUrl:cServer := cServer oFTP:oUrl:cUserID := cUser oFTP:oUrl:cPassword := cPassword endif IF oFTP:Open( oFTP:oUrl ) oFTP:oUrl:cPath := cRemoteDir IF !oFtp:DownloadFile( cLocalFile,cRemoteFile ) lRetorno := .F. ELSE lRetorno := .t. ENDIF oFTP:Close() ELSE cStr := "Não foi possivel conectar ao Ftp:" + oURL:cServer IF oFTP:SocketCon == NIL cStr += Chr( 13 ) + Chr( 10 ) + "Conexão não iniciada!" ELSEIF InetErrorCode( oFTP:SocketCon ) == 0 cStr += Chr( 13 ) + Chr( 10 ) + "Resposta do Servidor:" + " " + oFTP:cReply ELSE cStr += Chr( 13 ) + Chr( 10 ) + "Erro na Conexão:" + " " + InetErrorDesc( oFTP:SocketCon ) ENDIF msgstop(cStr,"Erro") lRetorno:=.f. ENDIF SysRefresh() RETURN lRetorno Function FtpDeletaArquivo(cServer,cUser,cPassword,cRemoteFile,cRemoteDir) Local oUrl , cUrl , oFtp , cStr , lRetorno Default cServer:="",cUser:="",cPassword:="",cRemoteFile:="",cRemoteDir:="" cServer:=alltrim(cServer) cUser:=alltrim(cUser) cPassword:=alltrim(cPassword) if Empty(cServer) msgAlert("Atenção Host não informado!","Alerta") return .f. endif if Empty(cUser) msgAlert("Atenção Usuario não informado!","Alerta") return .f. endif if Empty(cPassword) msgAlert("Atenção Senha não informado!","Alerta") return .f. endif if Empty(cRemoteFile) msgAlert("Atenção Arquivo não informado!","Alerta") return .f. endif if !isConnected() msgAlert("Atenção Sem Conexão com a Internet!","Alerta") return .f. endif cUrl := "ftp://" + cUser + ":" + cPassword + "@" + cServer oUrl := tUrl():New( cUrl ) oFTP := tIPClientFtp():New( oUrl, file("c:\desenv.sys") ) oFTP:nDefaultPort := 21 oFTP:nConnTimeout := 3000 oFTP:bUsePasv := .T. if At("@",cUrl)>0 oFTP:oUrl:cServer := cServer oFTP:oUrl:cUserID := cUser oFTP:oUrl:cPassword := cPassword endif IF oFTP:Open( oFTP:oUrl ) IF !oFtp:Dele( cRemoteDir+cRemoteFile ) lRetorno := .F. ELSE lRetorno := .t. ENDIF oFTP:Close() ELSE cStr := "Não foi possivel conectar ao Ftp:" + oURL:cServer IF oFTP:SocketCon == NIL cStr += Chr( 13 ) + Chr( 10 ) + "Conexão não iniciada!" ELSEIF InetErrorCode( oFTP:SocketCon ) == 0 cStr += Chr( 13 ) + Chr( 10 ) + "Resposta do Servidor:" + " " + oFTP:cReply ELSE cStr += Chr( 13 ) + Chr( 10 ) + "Erro na Conexão:" + " " + InetErrorDesc( oFTP:SocketCon ) ENDIF msgstop(cStr,"Erro") lRetorno:=.f. ENDIF SysRefresh() RETURN lRetorno Quote Link to comment Share on other sites More sharing options...
Valdir Posted January 31, 2014 Author Report Share Posted January 31, 2014 Fala Tranka... Valdir, como eu faço isso em FiveWin? http://www.pctoledo.com.br/forum/viewtopic.php?f=43&t=14630&p=85559&hilit=ftp#p85559 Obg. abs. Acredito que seja para Harbour e não xHarbour. Como não manjo nada de harbour... aferrou-se. um abraço Quote Link to comment Share on other sites More sharing options...
Valdir Posted February 19, 2014 Author Report Share Posted February 19, 2014 Olá pessoal... Novamente estou com problemas ao baixar um arquivo do meu FTP... O arquivo vem vazio conforme reportado acima. O pior de tudo é que não é sempre que isso ocorre. Tô ficando doidcho... kkkk Matheus... essas funções são de qual classe FTP ? Vagner e demais amigos... existem outras opções para realizar essas tarefas ? Obrigado Quote Link to comment Share on other sites More sharing options...
kapiaba Posted February 19, 2014 Report Share Posted February 19, 2014 Se não conseguir agora... http://forums.fivetechsupport.com/viewtopic.php?f=6&t=27423&p=152711&hilit=bajar+archivo+ftp#p152711 http://forums.fivetechsupport.com/viewtopic.php?f=6&t=22410&p=119344&hilit=bajar+archivo+ftp#p119344 http://forums.fivetechsupport.com/viewtopic.php?f=6&t=20501&p=118673&hilit=bajar+archivo+ftp#p118673 http://forums.fivetechsupport.com/viewtopic.php?f=6&t=18599&p=97472&hilit=bajar+archivo+ftp#p97472 http://forums.fivetechsupport.com/viewtopic.php?f=6&t=15589&p=81285&hilit=bajar+archivo+ftp#p81285 http://forums.fivetechsupport.com/viewtopic.php?f=6&t=9777&p=47181&hilit=bajar+archivo+ftp#p47181 http://www.libssh.org/ Abs, Quote Link to comment Share on other sites More sharing options...
Valdir Posted February 20, 2014 Author Report Share Posted February 20, 2014 Se não conseguir agora... http://forums.fivetechsupport.com/viewtopic.php?f=6&t=27423&p=152711&hilit=bajar+archivo+ftp#p152711 http://forums.fivetechsupport.com/viewtopic.php?f=6&t=22410&p=119344&hilit=bajar+archivo+ftp#p119344 http://forums.fivetechsupport.com/viewtopic.php?f=6&t=20501&p=118673&hilit=bajar+archivo+ftp#p118673 http://forums.fivetechsupport.com/viewtopic.php?f=6&t=18599&p=97472&hilit=bajar+archivo+ftp#p97472 http://forums.fivetechsupport.com/viewtopic.php?f=6&t=15589&p=81285&hilit=bajar+archivo+ftp#p81285 http://forums.fivetechsupport.com/viewtopic.php?f=6&t=9777&p=47181&hilit=bajar+archivo+ftp#p47181 http://www.libssh.org/ Abs, Fala Tranka.... Obrigado por responder, porém acredito que o problema esteja relacionado com os tipos de Protocolos : "FTP://", "FTPS://" ou "SFTP://" As funções baseadas na WinInet.dll parecem funcionar somente no protocolo "FTP://" e não nos demais. Acredito que isso ocorra para aumentar a segurança dos Servidores de FTP. Vai saber né ? Se tiver outras sugestões, agradeço. abração. kapiaba 1 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted February 20, 2014 Report Share Posted February 20, 2014 http://www.guj.com.br/java/262539-resolvido-arquivo-xml-baixado-via-ftp-vindo-vazio---android Quote Link to comment Share on other sites More sharing options...
vagner Posted February 21, 2014 Report Share Posted February 21, 2014 Olá Valdir,Coloque um syswait() dentro do While Não sei pq eu não consigo mais colar nada no fórum , nem responder com quote então coloque um syswait, e veja se está retornando a quantidade de bytes Quote Link to comment Share on other sites More sharing options...
Valdir Posted February 22, 2014 Author Report Share Posted February 22, 2014 Olá Valdir, Coloque um syswait() dentro do While Não sei pq eu não consigo mais colar nada no fórum , nem responder com quote então coloque um syswait, e veja se está retornando a quantidade de bytes Boas... meu amigo: Ontem refiz o teste colocando o Syswait() e verifiquei que retornava zero. Reclamei com o Suporte do meu provedor e descobri que eles colocaram algumas restrições de segurança. Depois de muito brigar, consegui que liberassem essas restrições e tudo voltou a funcionar normalmente. O pior de tudo é que eles fazem alterações sem nos comunicar. São uns Kraio mesmo... Mais uma vez, Obrigado pela sua ajuda. abração. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.