Página 3 de 4
Dois Exemplos de FTP - DownLoad
Enviado: 16 Set 2012 00:10
por sygecom
cjp escreveu:Meus caros,
Vocês sabem me informar se pela função oftp:Downloadfile() seria possível baixar de uma vez todos os arquivos que estiverem em determinada pasta do FTP?
Tente:
oFtp:MGET( ,'c:\nome_pasta\' )
Dois Exemplos de FTP - DownLoad
Enviado: 16 Set 2012 00:41
por cjp
Era exatamente isto que eu queria, meu caro.
Mas, infelizmente, está dando o seguinte erro:
Subsystem Call ....: BASE
System Code .......: 1066
Default Status ....: .F.
Description .......: Argument error
Operation .........: conditional
Arguments .........: [ 1] = Type: C Val: .
l3-12.pdf
Lista de aniversariantes da Classe2.xls
O que seria este Argument error, por favor?
Dois Exemplos de FTP - DownLoad
Enviado: 19 Set 2012 01:00
por cjp
Por favor, alguém me ajude. Estou precisando usar essa oFtp:MGET.
Alguém poderia me dar uma mão?
Dois Exemplos de FTP - DownLoad
Enviado: 19 Set 2012 02:54
por JoséQuintas
No meu sistema já deixei algo neste estilo:
If .Not. DownloadLIbHarbour()
DownloadSoap()
É que pelas LIBs do Harbour falha a cada uma ou das semanas, e pelo SOAP nunca.
Só mantive pra de vez em quando, quando funcionar, aparecer o gráfico de download.
Se for testar na época da falha... vai pensar que está fazendo errado.
Dois Exemplos de FTP - DownLoad
Enviado: 19 Set 2012 10:22
por sygecom
Olá Cjp,
cjp escreveu:Era exatamente isto que eu queria, meu caro.
Mas, infelizmente, está dando o seguinte erro:
Post por favor um exemplo completo de como está usando.
Olá José,
JoséQuintas escreveu:
É que pelas LIBs do Harbour falha a cada uma ou das semanas, e pelo SOAP nunca.
Que isso José, você um cara esperto e sabe que LIB é LIB, ela não não muda o código a cada semana sozinha, você precisa entender o que está fazendo de errado, um grande coisa que a maioria do pessoal comete de erro com FTP são as conexões simultâneas que a maioria dos provedor bloqueia isso, varios já entraram em contato comigo com endereços de links errados, falta de permissão, e sem contar a questão do FTP PASSIVO, PORTA DO FTP,CODIFICAÇÃO UTF8, TSL e etc...
Eu uso essa LIB a ANOS e não tenho problemas, faz barra progressiva, envio backup para FTP e tudo mais....
Revisem e revisem, quando se trata de LINK's uma letra em Minusculo ou Maiúsculo ou até mesmo uma barra errada já mela tudo...
Dois Exemplos de FTP - DownLoad
Enviado: 19 Set 2012 22:18
por fladimir
Pelo meu uso aki constante tb em vários clientes percebo q ocorre exatamente isto q o Leo comentou, qdo por exemplo da um PICO de acessos simultâneos ocorrem problemas, mas não devido ao sistema e sim devido ao acesso simultâneo via FTP, eu não estudei como contornar isto pois se esperar um pouco e tentar funciona normalmente....
O q li por cima, não estudei a fundo, é q se eu fizer o acesso via HTTP e o download tb não terei o problema de acessos simultâneos da mesma maneira q estou tendo eventualmente com o FTP... bom mas isto já é outra história...
[]´s
Dois Exemplos de FTP - DownLoad
Enviado: 20 Set 2012 00:08
por cjp
Estou usando assim, meu caro:
Código: Selecionar todos
Function recebftp(arqvrec,pasta)
ftpproto ="ftp://" //posthilit">ftp://"
ftpserver = "ftp.inaciocarvalho.com.br" //posthilit">ftp.servidor.com.br" endereço de ="posthilit">FTP</span> do site
ftpuser = "promotor" //Usuário da conta ="posthilit">FTP</span>
ftppass = snhftp //Senha da conta ="posthilit">FTP</span>
curl:=ftpproto+ftpuser+":"+ftppass+"@"+ftpserver
oUrl:= turl():new(curl)
oCred:= tIPCredentials()
oFtp:= tipclientftp():NEW(oUrl,,.T.)
oFTP:nConnTimeout := 20000
oFTP:bUsePasv := .T.
IF oFTP:Open()=.f.
usooff="S"
erecftp="nao conectou"
RETURN .F.
endif
if oFTP:Cwd(pasta)=.f. // informe o diretorio (="posthilit">no</span> site) onde está o arquivo EXE que voce vai copiar
erecftp="nao abriu pasta "+pasta
return .f.
endif
if oFtp:DownLoadFile(arqvrec)=.f. //informe o nome do arquivo que você quer baixar
erecftp="nao recebeu arquivo"
return .f.
endif
oFtp:DELE(arqvrec)
oFTP:Close()
Return .t.
Dois Exemplos de FTP - DownLoad
Enviado: 21 Set 2012 13:46
por sygecom
Olá Inacio,
Veja um erro na linha:
oFtp:= tipclientftp():NEW(oUrl,,.T.)
tente mudar para:
oFtp:= tipclientftp():NEW(oUrl,.F.) // cuida as virgulas, no seu exemplo tem uma a mais
Outra coisa que não sei se faz diferença, mas no meu ftp está primeiro:
oFtp:= tipclientftp():NEW(oUrl,.F.)
depois:
oUrl:= turl():new(curl)
Dois Exemplos de FTP - DownLoad
Enviado: 21 Set 2012 23:19
por cjp
Eu copiei a função da sugestão dos colegas daqui.
Fiz as alterações que vc recomendou. Vou testar.
Muito obrigado.
Inacio
Dois Exemplos de FTP - DownLoad
Enviado: 15 Mai 2015 15:33
por BOB HALL
Funcionou perfeitamente, so que tenho uma duvida de como verificar se um arquivo especifico esta na pasta do ftp.
Dois Exemplos de FTP - DownLoad
Enviado: 15 Mai 2015 16:21
por cjp
Oi, Bob,
Eu criei uma função para isso. Veja se te ajuda:
Código: Selecionar todos
Function listaftp(pasta)
ftpproto ="ftp://" //posthilit">ftp://"
ftpserver = ftps // posthilit">ftp.servidor.com.br" endere‡o de ="posthilit">FTP</span> do site
ftpuser = "xxx" //Usu rio da conta ="posthilit">FTP</span>
curl:=ftpproto+ftpuser+":"+snhftp+"@"+ftpserver
oUrl:= turl():new(curl)
oCred:= tIPCredentials()
oFtp:= tipclientftp():NEW(oUrl,.T.)
oFTP:nConnTimeout := 20000
oFTP:bUsePasv := .T.
pasta=alltrim(pasta)
nTentativas=0
do while .t.
IF oFTP:Open()
exit
else
nTentativas++
@ maxrow()-1,1 clear to maxrow()-1,maxcol()-1
@ maxrow()-1,1 say "Tentando abrir o FTP (listaftp) ("+alltrim(str(nTentativas))+")"
if us="I" .and. (nTentativas=3 .or. nTentativas>8)
tone(261.7,nTentativas)
endif
inkey(20)
if (nTentativas>10 .or. usooff="S")
if val(substr(time(),5,1))>7
mandmail1("","NÆo abriu o FTP no listaftp")
endif
usooff="S"
return .f.
endif
endif
enddo
if !empty(pasta)
nTentativas := 0
oFTP:Cwd( "" )
While oFTP:Cwd(pasta)=.f.
oFTP:pwd()
if us="I"
@ maxrow()-1,1 say "NÆo conseguiu abrir a pasta do FTP; tentando novamente ("+alltrim(str(nTentativas))+")"
?oftp:creply
if nTentativas>6
tone(261.7,nTentativas)
endif
endif
InKey( 11.5 ) // aguarda
nTentativas++
If nTentativas >8
if us="I"
cls
?"Conferir pasta: "+pasta
?"Conferir oFTP:cReply: "+oFTP:cReply
tone(261.7,33)
inkey(10)
endif
if val(substr(time(),5,1))>7
mandmail1("","Conferir pasta no listaftp: "+pasta+"; "+oFTP:cReply)
endif
return .f.
EndIf
EndDo
endif
nTentativas=0
do while .t.
clista:=oFTP:List()
if valtype(clista)="U"
nTentativas++
if us="I" .and. nTentativas>5
@ maxrow()-1,1 clear to maxrow()-1,maxcol()-1
@ maxrow()-1,1 say "Clista est indefinida no listaftp"
tone(261.7,nTentativas-2)
inkey(5)
endif
if nTentativas>7
if val(substr(time(),5,1))>7
mandmail1("","Clista indefinido com valtype")
endif
return .f.
endif
else
exit
endif
enddo
nTentativas=0
nvestr={}
aadd(nvestr,{"nome","C",20,00})
do while .t.
arqbaixa="aq"+substr(time(),4,2)+substr(time(),7,2)
if file(arqbaixa+".dbf")
erase (arqbaixa)+".dbf"
else
bError := ErrorBlock( {|e| Break(e) } )
begin sequence
dbcreate(arqbaixa,nvestr)
recover using e
cMessage := ErrorMessage(e)
logerro()
endsequence
ErrorBlock( bError )
exit
endif
nTentativas++
if nTentativas>50
if val(substr(time(),5,1))>7
mandmail1("","NÆo conseguiu apagar o arqbaixa ("+arqbaixa+") no listaftp; verificar se vai conseguir usar a base adiante",,2)
endif
exit
endif
inkey(1)
enddo
if usebase(arqbaixa,"S")=.t.
dele all
pack
clista=substr(clista,57)
do while .t.
if empty(clista) .or. at("www.ina",clista)=1
exit
endif
nrfinal=at(".",substr(clista,1,10))+3
if at(".",substr(clista,nrfinal,5))=0
append blank
repl nome with substr(clista,1,nrfinal)
else
nrfinal=nrfinal+4
endif
clista=substr(clista,nrfinal+59)
if len(clista)<5
exit
endif
enddo
else
cadativ("Listaftp","NÆo abriu arqbaixa",arqbaixa,0," ",0,0," ")
if val(substr(time(),5,1))>7
mandmail1("","Listaftp nÆo est abrindo a base arqbx")
endif
return .f.
ENDIF
oFTP:cwd( "" )
oFTP:Close()
Return .t.
Dois Exemplos de FTP - DownLoad
Enviado: 30 Mai 2015 12:44
por Abel
ola pessoal,
ja testei varios exemplos aqui do forum para envio de arquivo via ftp, mas nao consigo
ele nao envia e quando vou ver se o arquivo carregou, ele esta la no site com 0 bytes.
nao sei se ajuda, mas eu to tentando enviar para a locaweb.
o download funciona perfeitamente com barra progressiva, mas o envio ..nao vai mesmo.
grato,
ABEL
Dois Exemplos de FTP - DownLoad
Enviado: 31 Mai 2015 02:22
por cjp
Abel, seria bom vc postar a função na qual vc está tentando enviar, para eventualmente alguém poder te ajudar a examiná-la e ver se tem algum problema que está impedindo o envio.
Dois Exemplos de FTP - DownLoad
Enviado: 06 Jun 2015 11:38
por Abel
Ola, cjp.
segue um dos exemplos para envio de arquivo via ftp, que acaba travando no envio.
Código: Selecionar todos
#include "common.ch"
#include "directry.ch"
PROCEDURE MAIN( cMask )
? TRP20FTPEnv( cMask )
RETURN
/**********************************************************************
*
* Static Function TRP20FTPEnv()
*
**********************************************************************/
STATIC FUNCTION TRP20FTPEnv( cCarpeta )
LOCAL aFiles
LOCAL cUrl
LOCAL cStr
LOCAL lRetorno := .T.
LOCAL oUrl
LOCAL oFTP
LOCAL cUser
LOCAL cServer
LOCAL cPassword
LOCAL cFile := ""
cServer := "ftp.xxxxxxx.br" // "ftpserver" /* change ftpserver to the real name or ip of your ftp server */
cUser := "xxxxxxx" // "ftpuser" /* change ftpuser to an valid user on ftpserer */
cPassword := "xxxxxx" // "ftppass" /* change ftppass to an valid password for ftpuser */
cUrl := "ftp://" + cUser + ":" + cPassword + "@" + cServer+":21"
/* Leemos ficheros a enviar */
aFiles := Directory( cCarpeta )
IF Len( aFiles ) > 0
oUrl := tUrl():New( cUrl )
oFTP := tIPClientFtp():New( oUrl, .f. )
oFTP:nConnTimeout := 20000
oFTP:bUsePasv := .f.
/* Comprobamos si el usuario contiene una @ para forzar el userid */
IF At( "@", cUser ) > 0
oFTP:oUrl:cServer := cServer
oFTP:oUrl:cUserID := cUser
oFTP:oUrl:cPassword := cPassword
ENDIF
IF oFTP:Open( cUrl )
FOR EACH cFile IN afiles
? "arquivo : " + cFile[ F_NAME ]
IF ! oFtp:UploadFile( cFile[ F_NAME ] )
?? oFtp:UploadFile( cFile[ F_NAME ] )
lRetorno := .F.
EXIT
ELSE
lRetorno := .T.
ENDIF
NEXT
oFTP:Close()
ELSE
cStr := "No se ha podido conectar con el servidor FTP" + " " + oURL:cServer
IF oFTP:SocketCon == NIL
cStr += Chr( 13 ) + Chr( 10 ) + "Conexi¾n no inicializada"
ELSEIF hb_InetErrorCode( oFTP:SocketCon ) == 0
cStr += Chr( 13 ) + Chr( 10 ) + "Respuesta del servidor:" + " " + oFTP:cReply
ELSE
cStr += Chr( 13 ) + Chr( 10 ) + "Error en la conexi¾n:" + " " + hb_InetErrorDesc( oFTP:SocketCon )
ENDIF
? cStr
lRetorno := .F.
ENDIF
ENDIF
RETURN lRetorno
Dois Exemplos de FTP - DownLoad
Enviado: 06 Jun 2015 11:54
por cjp
Está apontando algum erro no envio? Ou dá como enviado mas não envia?
Recentemente tive um problema assim: aparentemente enviava, mas o arquivo fica com 0 byte no FTP. Depois de muitas tentativas, descobri que o problema era falta de espaço no FTP. Vc já verificou se não seria este o teu caso?