Peguei este exemplo de algum colega aqui no fórum.
A conexão é realizada, assim como a criação da pasta.
O método de envio do arquivo não retorna nenhum erro,
inclusive a variável oFtp:cReply (resposta) volta dizendo que a transferência obteve sucesso.
Porém, quando verifico a existência do arquivo no servidor FTP, o mesmo não está lá. :%
Alguém por favor pode analisar este código e me dizer o que falta ?
Código: Selecionar todos
#include "fileio.ch"
#include "common.ch"
#include "Directry.ch"
#define eFTPSERVER1 'daxxi.com.br'
#define eFTPPORTA 21
#define eFTPUSER 'daxxi'
#define eFTPPASS 'password'
function enviaftp()
setmode(80,80)
arqv := 'update.prg'
pasta := 'NFP'
aDir0 := directory(arqv)
IF UPLOAD_ARQ( alltrim(pasta), alltrim(arqv) ) = .F.
@ maxrow(),1 say "Arquivo não enviado"
tone(261.7,23)
inkey(10)
return .f.
else
return .t.
ENDIF
RETURN NIL
STATIC FUNCTION UPLOAD_ARQ( FTPDIR, farq )
Local cUrl, oUrl, oFTP, cFTPSERVER:=''
cFTPSERVER:=eFTPSERVER1
cUrl := "ftp://" + eFTPUSER + ":" + eFTPPASS + "@" + cFTPSERVER
oUrl := tUrl():New( cUrl )
oFTP := tIPClientFtp():New( oUrl, .T. )
oFTP:nConnTimeout := 20000
oFTP:bUsePasv := .T.
oFTP:nDefaultPort := eFTPPORTA
oFTP:oUrl:cUserID := eFTPUSER
oFTP:oUrl:cServer := cFTPSERVER
oFTP:oUrl:cPassword := eFTPPASS
IF oFTP:Open( cUrl )
alista:= oFTP:ListFiles()
cRoot:= aLista[1,1]
IF !oFTP:Cwd(cRoot + '/' + ftpdir) // se não achar o diretorio ele cria
oFTP:Mkd(cRoot + '/' + ftpdir) // cria o diretorio
ENDIF
oFTP:reset()= .f.
if oFtp:UploadFile( farq, farq ) = .f.
@ maxrow(),1 say "Não é possível enviar o arquivo"
return .f.
endif
alert(oFTP:cReply)
oFTP:CWD( ".." )
oFTP:Close()
ENDIF
RETURN( .T.)