Amigos !
com uma rotina de ftp do forum fiz diversas aplicação(upload e download) em meu sistema usando txt e exe!!
tetando enviar os pdf (nesse caso levar os boletos pra ser distribuído pelo sistema aos Clientes)
o oFtp:UploadFile() retorna .f.!! tem alguma coisa haver com certificado de segurança!?!?!?
usando o filezila ele pede confirmação de certificado!!
tem algum metodo em oftp para ser configurado nesse caso?
oFtp:UploadFile() nao envia PDF
Moderador: Moderadores
- juniorcamilo
- Usuário Nível 3

- Mensagens: 343
- Registrado em: 10 Nov 2006 09:12
- Localização: Pará
- juniorcamilo
- Usuário Nível 3

- Mensagens: 343
- Registrado em: 10 Nov 2006 09:12
- Localização: Pará
- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
oFtp:UploadFile() nao envia PDF
Boa tarde...
Estou estudando isso...
Se não for pedir muito poderia postar a rotina de upar/baixar ?
Obrigado
Estou estudando isso...
Se não for pedir muito poderia postar a rotina de upar/baixar ?
Obrigado
"Eu e minha casa servimos ao Senhor e você
"
- juniorcamilo
- Usuário Nível 3

- Mensagens: 343
- Registrado em: 10 Nov 2006 09:12
- Localização: Pará
oFtp:UploadFile() nao envia PDF
rubens escreveu:Boa tarde...
Estou estudando isso...
Se não for pedir muito poderia postar a rotina de upar/baixar ?
Obrigado
Código: Selecionar todos
#include "fileio.ch"
#include "common.ch"
#include "Directry.ch"
FUNCTION UP(cArquivo,cPasta,cFtpServer,nPorta,cUsuario,cPass,bIdentico,cCaminhoArquivo)
Local cUrl, oUrl, oFTP, aFile, aArquivo, aArqAux := {}, nCont := 1, aErro := {}
if bIdentico == nil; bIdentico := .t.; endif
if cCaminhoArquivo == nil; cCaminhoArquivo := ""; endif
//IF oFTP:DELE('/'+FTPDIR+'/'+ARQFTP) ; EXIT ; ELSE ; LOOP ; ENDIF
if Valtype(cArquivo) == "A"
for nCont = 1 to len(cArquivo)
cArquivo[nCont] := alltrim(cArquivo[nCont])
if File(cCaminhoArquivo+cArquivo[nCont])
aadd(aArqAux, cArquivo[nCont])
endif
next
elseif Valtype(cArquivo) == "C"
cArquivo := alltrim(cArquivo)
aadd(aArqAux, cArquivo)
if File(cCaminhoArquivo+aArqAux[nCont])
aadd(aArqAux, cArquivo)
endif
else
mouse(.f.)
@ 23,00 say padc("Arquivo nao e char e nem array",80)
inkey(5)
return .f.
endif
if len(aArqAux) <= 0
mouse(.f.)
@ 23,00 say padc("Nao encontrou o Arquivo!! ",80)
inkey(5)
mouse(.t.)
return .f.
endif
cPasta := alltrim(cPasta)
cUrl := "ftp://" + cUsuario + ":" + cPass + "@" + cFtpServer
oUrl := TUrl():New( cUrl )
oFTP := TIPClientFtp():New( oUrl, .T. )
oFTP:nConnTimeout := 20000
oFTP:bUsePasv := .T. // F = ENVIA BINARIO E FICA ZERO BYTE
oFTP:nDefaultPort := nPorta //PORTA DO FTP
oFTP:oUrl:cUserID := cUsuario
oFTP:oUrl:cServer := cFtpServer
oFTP:oUrl:cPassword := cPass
@ 23,00 say padc("Abrindo conex„o com o FTP.....Aguarde!!!",80)
IF oFTP:Open( cUrl )
IF !oFTP:Cwd(cPasta) // se não achar o diretorio ele cria
mouse(.f.)
@ 23,00 say padc("Criando pasta ("+cPasta+")",80)
inkey(5)
mouse(.t.)
oFTP:Mkd(cPasta) // cria o diretorio
ENDIF
oFTP:Cwd(cPasta) // informe o diretorio (no servidor ftp) onde está o arquivo versao.txt
If !empty(oFTP:List()) .and. Len(aArqAux) > 0 .and. !empty(aArqAux[1])&& verificar c nao sao identicos
for nCont = 1 to len(aArqAux)
cArquivo := aArqAux[nCont]
aArquivo := oFTP:ListFiles(cArquivo)
aFile := directory(cCaminhoArquivo+cArquivo)
if Len(aFile) # 0 .and. Len(aArquivo) # 0&& verificar c arquivo ja foi baixado
if aArquivo[1,2] == aFile[1,2] .and. bIdentico == .t.
mouse(.f.)
@ 23,00 say padc("Arquivo identico!!!",cPasta+cArquivo,80)
inkey(5)
mouse(.t.)
nCont++
loop
endif
endif
nTAMANHO := 0
aDir0 := directory(cCaminhoArquivo+cArquivo)
nTAMANHO := aDir0[1,2]
oFtp:exGauge := {|nPronto| FtpProgress(nPronto,nTamanho) }
if oFtp:UploadFile( cCaminhoArquivo+cArquivo, cPasta + '/' + cArquivo ) = .f.
mouse(.f.)
@ 23,00 say padc("N„o é possivel enviar o arquivo ("+cCaminhoArquivo+cArquivo+")",80)
aadd(aErro, "N„o é possivel enviar o arquivo ("+cCaminhoArquivo+cArquivo+")")
inkey(5)
mouse(.t.)
endif
next
endif
oFTP:CWD( ".." )
Millisec(1000)
oFTP:Close()
if Len(aErro) > 0
Return .f.
endif
ELSE
Return .f.
ENDIF
RETURN .T.
// =============================================================================
Function Do(cArquivo,cPasta,cFtpServer,nPorta,cUsuario,cPass,cPastaDownload,bIdentico) // Realiza download de atualização via ftp
Local cUrl, oUrl, oFTP, oCred, cList, bRet, aArquivo, nTamanho , aFile
if cPastaDownload == nil; cPastaDownload := CLTEMP; endif
if bIdentico == nil; bIdentico := .t.; endif
cUrl:="ftp://"+cUsuario+":"+cPass+"@"+cftpserver // url ftp
oUrl:= turl():new(curl)
oCred:= tIPCredentials()
oFtp:= tipclientftp():NEW(oUrl,,.T.)
oFTP:nConnTimeout := 20000
oFTP:bUsePasv := .T.
@ 23,00 say padc("Abrindo conexao com o FTP.....Aguarde!!!",80)
If oFTP:Open() // Abre conexão ftp
oFTP:Cwd(cPasta) // informe o diretorio (no servidor ftp) onde está o arquivo versao.txt
If !empty(oFTP:List())
aArquivo := oFTP:ListFiles(cArquivo)
if Len(aArquivo) == 0
oFTP:Close() // -> encerra conexão com servidor ftp
mouse(.f.)
@ 23,00 say padc("Error não localizou arquivo!",cPasta+cArquivo,80)
inkey(5)
mouse(.t.)
return .f.
endif
aFile := directory(cPastaDownload+cArquivo)
if Len(aFile) # 0 .and. Len(aArquivo) # 0&& verificar c arquivo ja foi baixado
if aArquivo[1,2] == aFile[1,2] .and. bIdentico == .t.
oFTP:Close() // -> encerra conexão com servidor ftp
mouse(.f.)
@ 23,00 say padc("Arquivo identico!!!",cPasta+cArquivo,80)
inkey(5)
mouse(.t.)
return .t.
endif
endif
ApagaArq(cPastaDownload+cArquivo)
nTamanho := aArquivo[1,2]
oFtp:exGauge := {|nPronto| FtpProgress(nPronto,nTamanho) }
bRet := oFtp:DownLoadFile(cPastaDownload+cArquivo,cPasta+cArquivo) // baixa o arquivo versão.txt existente na pasta update no servidor ftp
If !file(cPastaDownload+cArquivo) // se exister o arquivo,
oFTP:Close() // -> encerra conexão com servidor ftp
mouse(.f.)
@ 23,00 say padc("Erro: Arquivo "+cPasta+cArquivo+" não encontrado!",80)
inkey(5)
mouse(.t.)
return .f.
EndIf
oFTP:Close() // -> encerra conexão com servidor ftp
EndIf
Else
mouse(.f.)
@ 23,00 say padc("Error ao tentar conectar no servidor de atualização, por favor verifique sua conexção com a internet!",80)
inkey(5)
mouse(.t.)
return .f.
EndIf
Return .t.
//******************************************************
FUNCTION FtpProgress( nSent, nTotal, oFtp )
LOCAL cProgress
LOCAL nRow := 23, nCol := 00
cProgress:= STR((nSent/nTotal)*100,4)+"%"
@ nRow, nCol say padc("Comunicando..." + cProgress,80)
SetPos( MaxRow()-1, 0 )
SetPos( nRow, nCol )
RETURN .T.
//**********************************************- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
oFtp:UploadFile() nao envia PDF
Junior camilo.. sugestão, mas que talvez seja fonte antigo e já tenha feito....
Se usa sempre a mesma linha pra mensagem, e sempre usa isso do mouse....
Vai reduzir/simplificar se usar parecido com o que eu uso, por exemplo:
De quebra, ainda pode usar MaxRow() e MaxCol() pra mensagem se ajustar automaticamente ao tamanho da tela.
Apenas sugestão.
Código: Selecionar todos
mouse(.f.)
@ 23,00 say padc("Nao encontrou o Arquivo!! ",80)
inkey(5)
mouse(.t.)
Vai reduzir/simplificar se usar parecido com o que eu uso, por exemplo:
Código: Selecionar todos
MsgPausa( "Não encontrou o arquivo", 5 )
FUNCTION MsgPausa( cTexto, nPausa )
Mouse(.F.)
@ 23, 0 SAY Padc( cTexto, 80 )
Inkey( nPausa )
Mouse(.T.)
RETURN NIL
Apenas sugestão.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/