Página 1 de 1

Como baixar um arquivo no FTP

Enviado: 16 Mar 2013 12:50
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,

Como baixar um arquivo no FTP

Enviado: 16 Mar 2013 14:00
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

Como baixar um arquivo no FTP

Enviado: 16 Mar 2013 22:28
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.

Como baixar um arquivo no FTP

Enviado: 17 Mar 2013 11:36
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ô?

Como baixar um arquivo no FTP

Enviado: 17 Mar 2013 16:48
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

Como baixar um arquivo no FTP

Enviado: 17 Mar 2013 17:00
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).

Como baixar um arquivo no FTP

Enviado: 18 Mar 2013 08:53
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

Como baixar um arquivo no FTP

Enviado: 18 Mar 2013 22:30
por helio
Asimoes

testei mais deu um erro na seguinte linha: oURL :=turl():new(cURL) se poder me ajudar fico grato.

Como baixar um arquivo no FTP

Enviado: 19 Mar 2013 05:46
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.

Como baixar um arquivo no FTP

Enviado: 21 Mai 2013 09:42
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