Caros, como faco para verificar a existencia de um arquivo no servidor FTP?
Equivalente ao IF FILE()
Marcos Roberto
NOTA: Parabens ao PCTOLEDO ficou muito bom o novo modelo do forum, n eh por acaso que eh o principal forum em xbase.
Verificar existencia de um arquivo no servidor FTP
Moderador: Moderadores
-
marcos.gurupi
- Usuário Nível 4

- Mensagens: 939
- Registrado em: 06 Jul 2004 11:53
- Localização: Gurupi-TO
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: Verificar existencia de um arquivo no servidor FTP
Olá Marcos,
Eu faço conforme esta abaixo:
Abraços
Leonardo Machado
Eu faço conforme esta abaixo:
Código: Selecionar todos
Donwload_File("/www/atualiza/sistema/bin","sistema.exe","update\sistema.EXE")
***********************************************
Function Donwload_File(ftpdir,ftpfile,fdestino)
***********************************************
Private oBar,oDlg,oFont,nSize
PREPARE FONT oFont NAME "MS Sans Serif" WIDTH 0 HEIGHT -20
Private oDlgHabla:=nil
MsgRun("Aguarde Procurando Atualizações...")
Private vBaixa:="N"
ftpproto ="ftp://"
ftpserver = "ftp.servidor.com.br"
ftpuser = "usuario"
ftppass = "senha"
curl:=ftpproto+ftpuser+":"+ftppass+"@"+ftpserver
oUrl:= turl():new(curl)
oCred:= tIPCredentials()
oFtp:= tipclientftp():NEW(oUrl,,.T.)
oFTP:nConnTimeout := 20000
oFTP:bUsePasv := .T.
IF oFTP:Open()
oFTP:Cwd(ftpdir) // muda o diretorio
IF !empty(clista:=oFTP:List())
oFtp:DownLoadFile("update\versao.txt")
oFTP:reset()
oFtp:DownLoadFile("update\versao.txt")
HAND=FOPEN("update\versao.txt")
VERSAODISP=FREADSTR(HAND,4) // Le os 4 primeiros bytes do aquivo baixado
FCLOSE(HAND)
ferase("update\versao.txt")
IF VAL(VERSAODISP) > VAL(vCOMPILA)
vBaixa="S"
ENDIF
IF vBaixa="S"
Fim_Run()
IF MsgYesNo("Há uma Nova Atualização Disponivel, deseja Atualizar Agora ?")
Aguarde()
cTamanho:=Tamanho_File(clista,ftpfile)
Inicia_Progress(fdestino,cTamanho,ftpfile)
oDlg:Close()
fclose(janela2)
fclose(arq)
ferase(arq)
Endif
ENDIF
ENDIF
oFTP:CLOSE()
Else
MsgInfo("Não foi possivel se conectar ao servidor, Favor tente mais tarde.","Aviso do Sistema")
ENDIF
Fim_Run()
Return
*************************************
Function Tamanho_File(clista,ftpfile)
*************************************
GERAFILE()
vARQ:={}
aadd( vARQ, {"SIZE" ,"N",11,0} )
aadd( vARQ, {"CFILE","C",50,0} )
DBcreate(cFILE, vARQ,"RMDBFCDX")
USE (cFILE) ALIAS TMP SHARED
SELE TMP
FOR i=1 TO MLCOUNT(Clista)-1
clinha=MEMOLINE(Clista,,i)
DBAPPEND()
FIELD->SIZE := VAL(SUBST(clinha,34,10))
FIELD->cFILE := SUBST(clinha,56)
NEXT
vTamanho=0
LOCATE FOR UPPER(ALLTRIM(cfile))=UPPER(ALLTRIM(ftpfile))
IF FOUND()
vTamanho=SIZE
ENDIF
SELE TMP
USE
RETURN vTamanho
*************************************************
Function Inicia_Progress(fdestino,wTotal,ftpfile)
*************************************************
oFtp:exGauge := { | done, size| ShowGauge(done, size, wTotal, ftpfile ) }
oFtp:DownLoadFile(fdestino)
Procedure ShowGauge( nSent, nSize, wTotal, ftpfile )
IF nSent > 0
eval( {||oBar:Set(,(nSent/wTotal)*100),.t.} )
@ 50,120 say "Arquivo...: " +ftpfile+" "+ STR(nSent)+" Byts de: " + str(wTotal)+ " Byts "+str((nSent/wTotal)*100) +" %" SIZE 500,22;
COLOR x_BLUE
ENDIF
RETURN
*****************
Procedure Aguarde
*****************
INIT DIALOG oDlg TITLE "Atenção !" AT 45,30 SIZE 600,210 NOEXIT STYLE DS_CENTER + WS_VISIBLE
@ 50,20 say "Aguarde...Baixando Atualização..." size 300,40 Font oFont
@ 50,60 PROGRESSBAR oBar OF oDlg SIZE 510,50 BARWIDTH 10000
oDlg:Activate(.t.)
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql