Página 2 de 3
ftp com TIPCLIENT do XHB
Enviado: 04 Mai 2013 16:33
por cjp
Como assim definir porta, José? Se vc estiver falando da linha oFTP:nDefaultPort := eFTPPORTA ou da linha #define eFTPPORTA 21, eu as desabilitei para testar, mas assim também não funcionou.
Marcos, verifiquei, está tudo em minúscula. Até testei mudando para maiúsculas, mas também não funciona.
ftp com TIPCLIENT do XHB
Enviado: 15 Jun 2013 17:11
por cjp
Meus amigos,
Será que não existe um jeito de a TIPCLIENT voltar a funcionar?
Estou precisando muito dessa função.
Alguém me ajuda, por favor?
ftp com TIPCLIENT do XHB
Enviado: 15 Jun 2013 18:12
por fladimir
Se ja tentou com o xHarbour e não deu tenta com o HARBOUR pra testar, eu uso o Harbour e a tipclient direto todos os dias em diversos clientes e funciona bem.
[]'s
ftp com TIPCLIENT do XHB
Enviado: 16 Jun 2013 00:25
por cjp
Eu uso o Harbour, não o Xharbour.
Saberia me dizer por que comigo não funciona mais? Sempre funcionou, mas há alguns meses parou de funcionar, inexplicavelmente.
ftp com TIPCLIENT do XHB
Enviado: 16 Jun 2013 01:58
por Jairo Maia
Olá Inácio (cjp),
Já tentou entrar em contato com o suporte do seu provedor para saber se houve alteração de porta? Pergunto porque desde 01/01/2013 os provedores no Brasil desativaram as portas consideradas vulneráveis.
ftp com TIPCLIENT do XHB
Enviado: 16 Jun 2013 14:08
por fladimir
CJP seus problemas acabaram.... Não é produto tabajara e sim um pequeno erro de lógica....
Eu peguei seu código e compilei e rodei linha a linha com o DEBUG (q uso muito e me ajuda muito) e percebi o erro de lógica que vou transcrever no teu código abaixo e comentar, lembrando q tive q fazer alguns ajustes pra poder funcionar, mas nada q afetasse a real necessidade.
Código: Selecionar todos
//--> Esta parte esta abaixo da function enviaftp, mas eu por questão de forma de trabalho coloquei acima, mas isso não é o problema ok...
#include "inkey.ch"
#include "fileio.ch"
#include "common.ch"
#include "Directry.ch"
#define eFTPSERVER1 'ftp.meuenderecoftp.com.br' // ENDEREÇO SERVIDOR FTP 01
#define eFTPPORTA 21 // PORTA DO FTP PARA BAIXAR ATUALIZAÇÕES DO SISTEMA
#define eFTPUSER 'myuser' // USUARIO DO FTP PARA BAIXAR ATUALIZAÇÕES DO SISTEMA
#define eFTPPASS 'mypassword' // SENHA DO FTP PARA BAIXAR ATUALIZAÇÕES DO SISTEMA
function enviaftp()
altd() //--> chamo o debug pra acompanhar
arqv := 'testeftp.exe' //->meu arquivo a ser enviado pro FTP pra testar
pasta := 'www\' //-> minha pasta a ser changed qdo logar no FTP
aDir0 := directory(arqv)
IF UPLOAD_ARQ( alltrim(pasta), alltrim(arqv) ) = .F.
@ maxrow(),1 say "Arquivo não enviado "
tone(261.7,23)
inkey(10)
return .f.
else
return .t.
ENDIF
RETURN NIL
STATIC FUNCTION UPLOAD_ARQ( FTPDIR, farq )
Local cUrl, oUrl, oFTP, cFTPSERVER:=''
LOCAL vzerr := 0, cLista:='' //--> criei aki como local pq a primeira vzerr dava erro q eu não tinha essa variavel talvez no teu código macro estivesse vindo como public ou private de alguma chamada anterior, porém aki pra efeito de testes defini como zero e local os valores iniciais, e a outra eu explico mais abaixo.
cFTPSERVER:=eFTPSERVER1
cUrl := "ftp://" + eFTPUSER + ":" + eFTPPASS + "@" + cFTPSERVER
oUrl := tUrl():New( cUrl )
oFTP := tIPClientFtp():New( oUrl, .F. )
oFTP:nConnTimeout := 20000
oFTP:bUsePasv := .T.
oFTP:nDefaultPort := eFTPPORTA //PORTA DO FTP
oFTP:oUrl:cUserID := eFTPUSER
oFTP:oUrl:cServer := cFTPSERVER
oFTP:oUrl:cPassword := eFTPPASS
IF oFTP:Open( cUrl )
clista:=oFTP:List() //--> isso aki eu uso pra ver o conteudo da onde estou no FTP é tipo um comando DIR, pq ai no debug eu vejo o conteudo desta variavel durante a execução do código acompanhando seu valor
//--> aki é o X da questão, observe q vc mandou ele trocar de diretório mas se não achar cria, PORÉM SE ACHAR ELE JÁ TROCOU ENTENDE...
IF !oFTP:Cwd(ftpdir) // se não achar o diretorio ele cria
cria="N"
if us="I"
@ maxrow(),1 say "Pasta "+ftpdir+" inexistente no FTP; criar a pasta?"get cria pict "@!"
tone(261.7,33)
read
endif
if cria="S"
oFTP:MKD(ftpdir) // cria o diretorio
else
return .f.
endif
ENDIF
// ESSE IF ABAIXO ESTA ANALISANDO SE MUDAR DE PASTA NÃO DER CERTO AI MANDA UM EMAIL E RETORNA FALSO, PORÉM A CONDIÇÃO ACIMA É VERDADEIRA ELE JÁ ENCONTRA A PASTA E MUDA AUTOMATICAMENTE A CONDIÇÃO ABAIXO SE NÃO TIVER OUTRA PASTA COM O MESMO NOME VAI RETORNAR FALSO, DANDO A IMPRESSÃO QUE NÃO ESTA FUNCIONANDO, PORÉM A LÓGICA É Q FAZENDO COM Q RETORNE FALSO POIS NÃO TEM OUTRA PASTA DE MESMO NOME.
/*
if oFTP:Cwd(ftpdir)=.f. // muda o diretorio
if vzerr=1 .or. int(vzerr/15)=vzerr/15
mandmail1("","Retornou .f. no cwd; COMUNS 431")
endif
vzerr++
return .f.
ENDIF
*/
if oFTP:reset()=.f. //--> ESSA CONDIÇÃO EU NÃO USO NO MEU CÓDIGO E NÃO SEI EXPLICAR PORÉM AO TESTAR NÃO INFLUENCIOU.
// mandmail1("","Retornou .f. no reset; COMUNS 438")
return .f.
endif
//--> O RESTANTE BLZ VAI Q VAI...
if oFtp:UploadFile( farq )=.f.
if usooff#"S"
@ maxrow(),1 say "Não é possível enviar o arquivo"
endif
return .f.
endif
oFTP:Close() // fecha a conexão do FTP
ENDIF
RETURN( .T.)
Dá uma olhada aí e me fala se deu certo ou se eu viajei na maionese e seu problema continua...
Abraço
Sucesso!!
ftp com TIPCLIENT do XHB
Enviado: 17 Jun 2013 00:25
por cjp
De fato, amigo, estava errada minha função. Agora funcionou. Muito obrigado.
ftp com TIPCLIENT do XHB
Enviado: 17 Jun 2013 10:51
por fladimir
CJP, q bom q deu certo.
[]'s
ftp com TIPCLIENT do XHB
Enviado: 29 Ago 2013 23:31
por cjp
Colegas,
Mais uma vez esta função está dando erro.
A função que está dando erro é assim:
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 = "inaciobr" //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.
IF oFTP:Open()
if oFTP:Cwd(pasta)=.f.
return .f.
endif
clista:=oFTP:List()
if usebase("arqbx","S")=.t.
dele all
pack
clista=substr(clista,40)
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+42)
if len(clista)<5
exit
endif
enddo
else
return .f.
ENDIF
else
return .f.
endif
oFTP:Close()
Return .t.
O erro está dando na abertura da pasta do FTP, nesta lista:
Não consigo entender por que ele não consegue abrir a pasta, sendo que a pasta existe no FTP.
O pior é que o erro acontece apenas de vez em quando, não é em todas as vezes.
Tem algum jeito de descobrir a razão disso?
ftp com TIPCLIENT do XHB
Enviado: 30 Ago 2013 09:32
por fladimir
Qual o erro q aparece?
Eu testei aki, direcionando pro meu ftp, usuário e senha e definindo uma pasta do mesmo na variável PASTA e não processando a função usabase q não é pertinente ao assunto no meu ponto de vista e acompanhando via DEBUG deu tudo certo...
Teríamos q analisar o erro pra podermos ter uma ideia melhor.
[]´s
ftp com TIPCLIENT do XHB
Enviado: 30 Ago 2013 21:41
por cjp
Então, o problema é que eu não consigo saber qual o erro. Aliás, nem é propriamente um erro. Apenas a linha
retorna .f., sem qualquer explicação, pois a pasta existe no FTP.
E o pior é que isso não acontece sempre. Às vezes retorna .t., às vezes .f.
Tem como ao menos eu conseguir saber a razão disso?
ftp com TIPCLIENT do XHB
Enviado: 30 Ago 2013 23:10
por fladimir
Não tenho idéia... dá impressão q seja algo com o Servidor onde vc hospeda, mas não dá pra saber...
Vc experimentou outra versão do xHB pra comparar a nível de testes?
[]´s
ftp com TIPCLIENT do XHB
Enviado: 31 Ago 2013 05:31
por Jairo Maia
Olá Inácio,
Já tentou usar um temporizador? Por exemplo:
Código: Selecionar todos
nTentativas := 1
While oFTP:Cwd(pasta)=.f.
InKey( .5 ) // aguarda 1/2 segundo
nTentativas++
If nTentativas = 3 // após 3 tentativas p.e.
Hb_Alert( "Falha na conexão com o servidor.;Tente novamente depois." )
Return .f.
EndIf
EndDo
ftp com TIPCLIENT do XHB
Enviado: 31 Ago 2013 10:49
por fladimir
Boa ideia Jairo... já q o problema é esporádico pelo q o colega afirmou, pode ser algo a nível de conexão FTP com o server q hospeda, então a ideia de fazer um laço com 1 temporizador é uma possibilidade.
[]´s
ftp com TIPCLIENT do XHB
Enviado: 02 Set 2013 00:29
por cjp
Realmente é uma boa ideia, Jairo. Não tinha pensado nisto antes.
Implantei essa modificação agora. Vou testar e depois informo.
Obrigado por enquanto.