Como baixar um arquivo no FTP

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
helio
Usuário Nível 3
Usuário Nível 3
Mensagens: 175
Registrado em: 04 Ago 2004 10:36
Localização: São Bento do Una-PE
Contato:

Como baixar um arquivo no FTP

Mensagem por helio »

Pessoal estou querendo que o sistema baixe um arquivo do meu FTP teria como porque procurei no forum mais nao encontrei.

Utilizo o XHARBOUR 0.99.7 com SQLRDD

Valeu,
Helio Beltrao Jr.
msn: helio@htisistemas.com
paiva_dbdc
Usuário Nível 3
Usuário Nível 3
Mensagens: 342
Registrado em: 12 Nov 2012 09:58
Localização: uberlandia mg

Como baixar um arquivo no FTP

Mensagem por paiva_dbdc »

Boa eu SUBO e baixo. para FTP

uso xhb + wvw (e tenho a fwh linkada) NAo sei se vai precsar dela Teria que ver.

e´que comousava MUITO a fwh acabou ficando comandos dela dentro do sistema

cpaiva@netsite.com.br = MSN

PAiva
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Como baixar um arquivo no FTP

Mensagem por cjp »

Eu uso o oFTP, função do Harbour que também deve servir pro xharbour. Tem um tópico sobre isso no grupo. Ele dá umas falhas inexplicáveis de vez em quando.

Também tenho um .bat que acessa o ftp via dos. Posso te enviar, se vc quiser.
Inacio de Carvalho Neto
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Como baixar um arquivo no FTP

Mensagem por rochinha »

Amiguinhos,

Acrescentem e modifiquem a função abaixo.

Ela utiliza o CScript do Windows já que não fui muito feliz com as classes FTPs existentes.

Código: Selecionar todos

function NFE_EnviarFTP() /* ****** ////// OK ////// ****** */
   LOCAL WSHShell
   LOCAL intWindowStyle := 2, bWaitOnRun := .t.
   cPathNFE           := VerifyINI( "PATHS", "PathNFE", cPath+"\NF-e\remessa\NFe", cPathMonitorNFe+"\ACBrNFeMonitor.ini", .f.)
   // Caso seja entrada modificar o caminho de movimento
   cPathNFE           := strTran( cPathNFE, "\NFe", "\Ent" )
   cChaveNFe          := Alltrim( PN->NFe )
   cXMLFile           := cChaveNFe + "-nfe.XML"
   cXMLFile           := cPathNFE + "\" + cXMLFile
   //
   //cFTPServerName     := "ftp.SeuSite.com.br"
   //cFTPLoginID        := "SeuLogin"
   //cFTPPassword       := "SuaSenha"
   //cServerFolder      := "wwwroot/downloads"
   //cLocalFolder       := "c:\temp"
   //
   cSTRFile :=            [strFTPServerName   = "] + cSHFTPServer + ["] + CRLF
   cSTRFile := cSTRFile + [strFTPServerFolder = "] + cSHServerFolder + ["] + CRLF
   cSTRFile := cSTRFile + [strLoginID         = "] + cSHFTPLoginID + ["] + CRLF
   cSTRFile := cSTRFile + [strPassword        = "] + cSHFTPPassword + ["] + CRLF
   cSTRFile := cSTRFile + [strFile2PutGet     = "] + cXMLFile + ["] + CRLF
   cSTRFile := cSTRFile + [strLocalFolderName = "] + cSHLocalFolder + ["] + CRLF
   cSTRFile := cSTRFile + [strFTPScriptFileName = strLocalFolderName & "\nfeftpfile.txt"] + CRLF
   cSTRFile := cSTRFile + [Set objFSO = CreateObject("Scripting.FileSystemObject")] + CRLF
   cSTRFile := cSTRFile + [If (objFSO.FileExists(strFTPScriptFileName)) Then] + CRLF
   cSTRFile := cSTRFile + [   objFSO.DeleteFile (strFTPScriptFileName)] + CRLF
   cSTRFile := cSTRFile + [End If] + CRLF
   cSTRFile := cSTRFile + [Set objMyFile = objFSO.CreateTextFile(strFTPScriptFileName, True)] + CRLF
   cSTRFile := cSTRFile + [    objMyFile.WriteLine ("open " & strFTPServerName)] + CRLF
   cSTRFile := cSTRFile + [    objMyFile.WriteLine (strLoginID)] + CRLF
   cSTRFile := cSTRFile + [    objMyFile.WriteLine (strPassword)] + CRLF
   cSTRFile := cSTRFile + [    objMyFile.WriteLine ("cd " & strFTPServerFolder)] + CRLF
   cSTRFile := cSTRFile + [    objMyFile.WriteLine ("hash")] + CRLF
   cSTRFile := cSTRFile + [    objMyFile.WriteLine ("lcd " & strLocalFolderName)] + CRLF
   cSTRFile := cSTRFile + [    objMyFile.WriteLine ("put " & strFile2PutGet)] + CRLF
   cSTRFile := cSTRFile + [    objMyFile.WriteLine ("bye")] + CRLF
   cSTRFile := cSTRFile + [    objMyFile.WriteLine ("quit")] + CRLF
   cSTRFile := cSTRFile + [    objMyFile.Close] + CRLF
   cSTRFile := cSTRFile + [Set objFSO = Nothing] + CRLF
   cSTRFile := cSTRFile + [Set objMyFile = Nothing] + CRLF
   cSTRFile := cSTRFile + [Set objShell = WScript.CreateObject( "WScript.Shell" )] + CRLF
   cSTRFile := cSTRFile + [objShell.Run ("ftp -s:" & chr(34) & strFTPScriptFileName & chr(34))] + CRLF
   cSTRFile := cSTRFile + [Set objShell = Nothing]
   rMemoWrit( "nfedist.vbs", cSTRFile )
   // Uso de funções do Fivewin
   MsgRun( "Distribuindo..."  , "Nota Fiscal Eletronica", { || RUNCScript( cPathDados + "nfedist.vbs", 2 ) } )
   return .t.
Função RunCScript()

Código: Selecionar todos

function RUNCScript( cScript, intWindowStyle, bWaitOnRun )
   *  0 Hide the window and activate another window. 
   *  1 Activate and display the window. (restore size and position) Specify this flag when displaying a window for the first time. 
   *  2 Activate & minimize. 
   *  3 Activate & maximize. 
   *  4 Restore. The active window remains active. 
   *  5 Activate & Restore. 
   *  6 Minimize & activate the next top-level window in the Z order. 
   *  7 Minimize. The active window remains active. 
   *  8 Display the window in its current state. The active window remains active. 
   *  9 Restore & Activate. Specify this flag when restoring a minimized window. 
   * 10 Sets the show-state based on the state of the program that started the application. Example 
   LOCAL WSHShell
   DEFAULT intWindowStyle := 0, bWaitOnRun := .t.
   WSHShell := TOleAuto():New("wscript.shell")
   WSHShell:Run( "cscript /S /NOLOGO " + cScript, intWindowStyle, bWaitOnRun )
   WSHShell:End()
   return .t.
Aos amigos, peço também que abrilhantem as respostas aos post já com um trecho de código elucidativo, algum exemplo de uso próprio para dar idéia de como se procede e resolver mais rápido as paradas, firmô?
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
helio
Usuário Nível 3
Usuário Nível 3
Mensagens: 175
Registrado em: 04 Ago 2004 10:36
Localização: São Bento do Una-PE
Contato:

Como baixar um arquivo no FTP

Mensagem por helio »

Boa tarde,

Rochinha eu peguei a sua solucao mais este exemplo e enviar para FTP o que eu quero e baixar do FTP tem como ?

CJP se voce poder me mandar fico grato e mais uma solucao.

Valeu pela forca
Helio Beltrao Jr.
msn: helio@htisistemas.com
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Como baixar um arquivo no FTP

Mensagem por Pablo César »

helio escreveu:CJP se voce poder me mandar fico grato e mais uma solucao.
Helio, pra ir adiantando, talvez o que o colega referia-se é a uma função que preparei e deixei disponível na seção de Downloads: Downloads - Baixa arquivo de uma lista mas esta é uma solução em HMG/Harbour. Mas aqui no fórum, existem outros exemplos, inclusive em comando do sistema operacional rodando em aplicativo Clipper (só procurar).
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Como baixar um arquivo no FTP

Mensagem por asimoes »

Olá Helio,

Um exemplo de como eu uso o ftp para baixar arquivo.
Adapte para sua necessidade.
Obs: Este código funciona com harbour não sei se com xharbour funcionará.

Código: Selecionar todos

FUNCTION Donwload_Auto(cFile)
LOCAL ftpproto :="ftp://",;
      ftpserver:= "ftp.xxxxxx.kinghost.net:21",;
      ftpuser  := "xxxxx",;
      ftppass  := "xxxxx",;
      cURL     :=ftpproto+ftpuser+":"+ftppass+"@"+ftpserver,;
                 oUrl, oCred, oFtp

   HB_Default(@cFile,"versao.txt")
   IF Internet() //Testa se tem internet disponivel.
      TRY
         oURL :=turl():new(cURL)
         oCred:=TIPCredentials()
         oFTP :=TIPclientFTP():NEW(oUrl,,.T.)
         oFTP:nDefaultPort:=21 
         oFTP:nConnTimeout:=2000
         oFTP:BusePasv    :=.T.
         IF oFTP:Open()
            oFTP:Cwd("/UPLOAD/")     // muda o diretorio no FTP
            aLista:=oFTP:listFiles("*.*")
            IF AScan( aLista, {|a| Upper(a[1]) == "ASAPREV.EXE" } ) > 0 .AND. AScan( aLista, {|a| Upper(a[1]) == "ASAPREV.NEW" } ) > 0
               oFTP:DownLoadFile(HB_DirBase()+"DOWNLOAD\ASAPREV.EX_","ASAPREV.EXE")  // baixa o arquivo renomeando.
               oFTP:DownLoadFile(HB_DirBase()+"DOWNLOAD\ASAPREV.NEW","ASAPREV.NEW")  // baixa o arquivo renomeando.
               //oFtp:mget("*.*",".\download"+HB_PS())             // Baixar múltiplos arquivos
               oFtp:dele("ASAPREV.EXE")
               oFtp:dele("ASAPREV.NEW")
            ENDIF
            oFTP:Close()
         ENDIF
      END
   ENDIF
RETURN Nil
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
helio
Usuário Nível 3
Usuário Nível 3
Mensagens: 175
Registrado em: 04 Ago 2004 10:36
Localização: São Bento do Una-PE
Contato:

Como baixar um arquivo no FTP

Mensagem por helio »

Asimoes

testei mais deu um erro na seguinte linha: oURL :=turl():new(cURL) se poder me ajudar fico grato.
Helio Beltrao Jr.
msn: helio@htisistemas.com
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Como baixar um arquivo no FTP

Mensagem por asimoes »

Olá Hélio
helio escreveu:testei mais deu um erro na seguinte linha: oURL :=turl():new(cURL) se poder me ajudar fico grato.
Como eu disse esse código funciona com harbour não sei se funciona com xharbour, verifique se a lib -lhbtip está informada no script de compilação com harbour.

Nos informe.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Paulo Pereira
Usuário Nível 2
Usuário Nível 2
Mensagens: 79
Registrado em: 28 Abr 2011 00:29
Localização: Joinville / SC

Como baixar um arquivo no FTP

Mensagem por Paulo Pereira »

Oi
Rochinha usei o seu metodo de CScript do Windows, e acontece o seguinte:
se deixo essa linha WSHShell:End() , da erro Winole/1009 No Exporterd Method: END
Dos Error -2147352570

Se tiro a linha, consigo mandar o arquivo, do meu micro, MAS no cliente
A execucao vai até o ponto que tem o comando PUT ( onde o arquivo é transmitido)
ai fica esperendo e nao manda...
Isso tb acontecia quando eu gerava uma bat para mandar o arquivo.. via ftp
Entao acho que o problema nem é tando do metodo.. é configuracao

NAO tem haver como modo Passivo ???

PS: sempre funcionou nos clientes gerando uma bat simples, ai comecou na nao funcionar.
criava um arquivo e executava essa chamada
ftp -s:log.ftp

Arquivo log.ftp

Código: Selecionar todos

open
ftp.docliente.com.br
seulogin
suasenha
hash
binary
cd /pastadestino
put \nomedoarquivoquevai.txt
dir 
by

Responder