marcioe Posted September 24, 2021 Report Share Posted September 24, 2021 Olá boa noite a todos Seguinte preciso de uma rotina que possa "subir" um determinado arquivo, e uma outra, onde possa baixar um arquivo Agradeço a todos Quote Link to comment Share on other sites More sharing options...
devairlp Posted September 24, 2021 Report Share Posted September 24, 2021 #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 Quote Link to comment Share on other sites More sharing options...
Jorge Andrade Posted September 29, 2021 Report Share Posted September 29, 2021 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, Quote Link to comment Share on other sites More sharing options...
Ladinilson Posted September 30, 2021 Report Share Posted September 30, 2021 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 Quote Link to comment Share on other sites More sharing options...
Jorge Andrade Posted September 30, 2021 Report Share Posted September 30, 2021 1 hora atrás, Ladinilson disse: 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 Ladinilson, isso que te enviei é do FTP. Quote Link to comment Share on other sites More sharing options...
Jmsilva Posted September 30, 2021 Report Share Posted September 30, 2021 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) Quote Link to comment Share on other sites More sharing options...
marcioe Posted April 25, 2023 Author Report Share Posted April 25, 2023 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) Quote Link to comment Share on other sites More sharing options...
Jmsilva Posted April 26, 2023 Report Share Posted April 26, 2023 STRUCTURE oVar . MEMBER oFtp MEMBER lOpen INIT .F. MEMBER cDir INIT "Repos" MEMBER cPassword INIT "123456" MEMBER cUSBStick INIT "ftp://nome_do_usuario_ftp:senha@localhost" ENDSTRUCTURE Faltou criar a variavel oFtp Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.