Jump to content
Fivewin Brasil

Ftp


marcioe

Recommended Posts

#include "Fivewin.ch" 
 
#include "fileio.ch"
#include "Struct.ch"  // para FTP directory

#define INTERNET_OPEN_TYPE_DIRECT    1   // direct to net 
#define INTERNET_INVALID_PORT_NUMBER 0   // use the protocol-specific default 
#define INTERNET_SERVICE_FTP         1 
#define INTERNET_FLAG_PASSIVE 0x08000000 

#define GENERIC_WRITE 1073741824 
#define GENERIC_READ  2147483648


	static ftpatualizar:= "/pedidos/atualizar/"
	static ftpfinance:= "/pedidos/finance/"

	static cftp:= 'ftp.seuftp.com.br'
	static cuserftp:= "usuario"
	static csenhaftp:="senha" 

* enviar arquivos para o FTP - upload
  FUNCTION FTPenviar( _Warqui )

    Local oDlg, oPrg 
    Local warqui:= cFileName( _warqui )
    
    DEFINE DIALOG oDlg TITLE 'Arquivo: '+ alltrim( warqui )
    oDlg:lHelpIcon:=.F.

    @ 2, 2 PROGRESS oPrg SIZE 100, 15 

    oDlg:bStart:= {|| UPLOAD( oPrg, oDlg, warqui ), SysWait(0.1), oDlg:end() } 
    ACTIVATE DIALOG oDlg CENTER 

   RETURN NIL 


* enviar arquivos - ftp
STATIC FUNCTION UPLOAD( oPrg, oDlg, warqui ) 

	 LOCAL hInternet, hConnect, hSource, hDest, nRead 
    LOCAL cData := SPACE( 1024 ) 
    LOCAL nPos := 0 

    hInternet = INTERNETOPEN( "Anystring", INTERNET_OPEN_TYPE_DIRECT, 0, 0, 0 ) 
    IF hInternet = 0
      ALERT( 'Sem conexão com internet.' ,,'AVISO')
      RETURN .F.
    ENDIF

    hConnect = INTERNETCONNECT( hInternet, cftp, INTERNET_INVALID_PORT_NUMBER, cuserftp, csenhaftp, INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0 ) 
    IF hConnect = 0
      ALERT('ERRO na criação da conexão com internet - transmissão abortada.',,'AVISO')
      RETURN .F.
    ENDIF
    
    hDest = FTPOPENFILE( hConnect, ftpatualizar + alltrim( warqui ), GENERIC_WRITE, 0, 0 ) 

    oPrg:SetPos( 0 ) 

    oPrg:SetRange( 0, FSIZE( warqui ) ) 

    hSource:= FOPEN( warqui ) 

    WHILE .T.        
        nRead = FREAD( hSource, @cData, LEN( cData ) ) 

        IF nRead = 0 
            IF FERROR() = 0 
                ? "Arquivo enviado - OK" 
                oDlg:end()
            ELSE 
                ? "Read erro" 
            ENDIF 

            EXIT 
        ENDIF 

        IF !INTERNETWRITEFILE( hDest, @cData, nRead ) 
           ? "Upload erro" 
           EXIT 
        ENDIF 

        nPos += LEN( cData ) 

        oPrg:SetPos( nPos ) 
    ENDDO 

    FCLOSE( hSource ) 

    INTERNETCLOSEHANDLE( hSource ) 
    INTERNETCLOSEHANDLE( hConnect ) 
    INTERNETCLOSEHANDLE( hInternet ) 

    RETURN NIL 

 Esse é para envio

Link to comment
Share on other sites

Em 24/09/2021 at 08:55, devairlp disse:

#include "Fivewin.ch" 
 
#include "fileio.ch"
#include "Struct.ch"  // para FTP directory

#define INTERNET_OPEN_TYPE_DIRECT    1   // direct to net 
#define INTERNET_INVALID_PORT_NUMBER 0   // use the protocol-specific default 
#define INTERNET_SERVICE_FTP         1 
#define INTERNET_FLAG_PASSIVE 0x08000000 

#define GENERIC_WRITE 1073741824 
#define GENERIC_READ  2147483648


	static ftpatualizar:= "/pedidos/atualizar/"
	static ftpfinance:= "/pedidos/finance/"

	static cftp:= 'ftp.seuftp.com.br'
	static cuserftp:= "usuario"
	static csenhaftp:="senha" 

* enviar arquivos para o FTP - upload
  FUNCTION FTPenviar( _Warqui )

    Local oDlg, oPrg 
    Local warqui:= cFileName( _warqui )
    
    DEFINE DIALOG oDlg TITLE 'Arquivo: '+ alltrim( warqui )
    oDlg:lHelpIcon:=.F.

    @ 2, 2 PROGRESS oPrg SIZE 100, 15 

    oDlg:bStart:= {|| UPLOAD( oPrg, oDlg, warqui ), SysWait(0.1), oDlg:end() } 
    ACTIVATE DIALOG oDlg CENTER 

   RETURN NIL 


* enviar arquivos - ftp
STATIC FUNCTION UPLOAD( oPrg, oDlg, warqui ) 

	 LOCAL hInternet, hConnect, hSource, hDest, nRead 
    LOCAL cData := SPACE( 1024 ) 
    LOCAL nPos := 0 

    hInternet = INTERNETOPEN( "Anystring", INTERNET_OPEN_TYPE_DIRECT, 0, 0, 0 ) 
    IF hInternet = 0
      ALERT( 'Sem conexão com internet.' ,,'AVISO')
      RETURN .F.
    ENDIF

    hConnect = INTERNETCONNECT( hInternet, cftp, INTERNET_INVALID_PORT_NUMBER, cuserftp, csenhaftp, INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0 ) 
    IF hConnect = 0
      ALERT('ERRO na criação da conexão com internet - transmissão abortada.',,'AVISO')
      RETURN .F.
    ENDIF
    
    hDest = FTPOPENFILE( hConnect, ftpatualizar + alltrim( warqui ), GENERIC_WRITE, 0, 0 ) 

    oPrg:SetPos( 0 ) 

    oPrg:SetRange( 0, FSIZE( warqui ) ) 

    hSource:= FOPEN( warqui ) 

    WHILE .T.        
        nRead = FREAD( hSource, @cData, LEN( cData ) ) 

        IF nRead = 0 
            IF FERROR() = 0 
                ? "Arquivo enviado - OK" 
                oDlg:end()
            ELSE 
                ? "Read erro" 
            ENDIF 

            EXIT 
        ENDIF 

        IF !INTERNETWRITEFILE( hDest, @cData, nRead ) 
           ? "Upload erro" 
           EXIT 
        ENDIF 

        nPos += LEN( cData ) 

        oPrg:SetPos( nPos ) 
    ENDDO 

    FCLOSE( hSource ) 

    INTERNETCLOSEHANDLE( hSource ) 
    INTERNETCLOSEHANDLE( hConnect ) 
    INTERNETCLOSEHANDLE( hInternet ) 

    RETURN NIL 

 Esse é para envio

Amigo, boa tarde. Eu tenho uma rotina antiga desenvolvida em console que eu utilizava, quem sabe serve pra vc migrar para FW. Tem a conexão,  download, upload, rename de arquivos, pasta e etc...

Se te interessa, passa o email que te mando.

[]s,

 

 

Link to comment
Share on other sites

21 horas atrás, Jorge Andrade disse:

Amigo, boa tarde. Eu tenho uma rotina antiga desenvolvida em console que eu utilizava, quem sabe serve pra vc migrar para FW. Tem a conexão,  download, upload, rename de arquivos, pasta e etc...

Se te interessa, passa o email que te mando.

[]s,

 

 

Bom dia meu caro,

Poderia me mandar também para uma análise pois fiz um com RaiDrive ficou bom por criar uma unidade da pasta do Google Drive mas quaria lgo mais nativo.

ladinilson@hotmail.com

Obrigado

Link to comment
Share on other sites

Veja se ajuda:

#include "Directry.ch"
#include "fivewin.ch"
#include "hbstruct.ch"

Static oVar
FUNCTION Main()
   Local cFile := "File.zip"
   
   STRUCTURE oVar    
     MEMBER lOpen     INIT .F.
     MEMBER cDir      INIT "Repos"
     MEMBER cPassword INIT "123456"
     MEMBER cUSBStick INIT "ftp://nome_do_usuario_ftp:senha@localhost"
   ENDSTRUCTURE
  
   //CONEXÃO
   oVar:oFtp := TIpClientFtp():New(oVar:cUSBStick)
   oVar:oFtp:oUrl:cPassword := oVar:cPassword
   oVar:oFtp:nDefaultPort := 21 //porta
   oVar:lOpen := oVar:oFtp:open()
   
   IF oVar:lOpen
      //entra no diretório
      oVar:oFtp:cwd(oVar:cDir)

      //UpLoad
      oVar:oFtp:uploadFile(cFile)
      MsgInfo(oVar:oFtp:cReply +CRLF+"Upload Concluído")
      
      //Download
      oVar:oFtp:downloadFile( "C:\temp\file01.zip",cFile)
      MsgInfo(oVar:oFtp:cReply +CRLF+"Download concluído")
      oVar:oFtp:cwd("..") //volta um nível de diretório
      //Finaliza  
      oVar:oFtp:Close()
   Endif   
Return Nil

Se o diretório não existir pode criar com oVar:oFtp:mkd(oVar:cDir)

Link to comment
Share on other sites

  • 1 year later...

Olá amigo, a sua Rotina parece ser muito boa, código curtinho

Porem compila, mas ao rodar, dá esse erro

Error BASE/1131  Hash key not found and Auto Add turned off

Linha de referencia

 oVar:oFtp := TIpClientFtp():New(oVar:cUSBStick)

 

Confere se passei esse parametro correto

Imagina que a minha senha fose maria1234

usuario          jose@.informaisweb

Seria assim ?
cUSBStick INIT "ftp.informaisweb.com.br:maria1234"

MEMBER cUSBStick INIT "ftp://nome_do_usuario_ftp:senha@localhost"

Em 30/09/2021 at 17:03, Jmsilva disse:

Veja se ajuda:


#include "Directry.ch"
#include "fivewin.ch"
#include "hbstruct.ch"

Static oVar
FUNCTION Main()
   Local cFile := "File.zip"
   
   STRUCTURE oVar    
     MEMBER lOpen     INIT .F.
     MEMBER cDir      INIT "Repos"
     MEMBER cPassword INIT "123456"
     MEMBER cUSBStick INIT "ftp://nome_do_usuario_ftp:senha@localhost"
   ENDSTRUCTURE
  
   //CONEXÃO
   oVar:oFtp := TIpClientFtp():New(oVar:cUSBStick)
   oVar:oFtp:oUrl:cPassword := oVar:cPassword
   oVar:oFtp:nDefaultPort := 21 //porta
   oVar:lOpen := oVar:oFtp:open()
   
   IF oVar:lOpen
      //entra no diretório
      oVar:oFtp:cwd(oVar:cDir)

      //UpLoad
      oVar:oFtp:uploadFile(cFile)
      MsgInfo(oVar:oFtp:cReply +CRLF+"Upload Concluído")
      
      //Download
      oVar:oFtp:downloadFile( "C:\temp\file01.zip",cFile)
      MsgInfo(oVar:oFtp:cReply +CRLF+"Download concluído")
      oVar:oFtp:cwd("..") //volta um nível de diretório
      //Finaliza  
      oVar:oFtp:Close()
   Endif   
Return Nil

Se o diretório não existir pode criar com oVar:oFtp:mkd(oVar:cDir)

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...