Barra de progresso de download com TIPClientFTP
Enviado: 09 Jun 2016 17:55
Pessoal,
Tem algum exemplo de barra de progresso de download com TIPClientFTP() ?
Tem algum exemplo de barra de progresso de download com TIPClientFTP() ?
Em homenagem a Paulo Cesar Toledo
https://pctoledo.org/
Código: Selecionar todos
FUNCTION DownloadJpa( cSource, cTarget, Tamanho )
LOCAL cRemotePath, cServer, cUser, cPassword, cUrl, cMsgErro
LOCAL oUrl, oFtp, aFiles, lRetorno
hb_Default( @Tamanho, 0 )
cRemotePath := ""
IF "/" $ cSource
cRemotePath := Substr( cSource, 1, Rat( "/", cSource ) - 1 )
cSource := Substr( cSource, Rat( "/", cSource ) + 1 )
ENDIF
cServer := "ftp.xxx.com.br"
cUser := "xxxx"
cPassword := SenhaFtp()
cUrl := "ftp://" + cUser + ":" + cPassword + "@" + cServer
oUrl := tUrl():New( cUrl )
oFtp := TIPClientFtp():New( oUrl, .F. )
oFtp:nConnTimeOut := 10000
oFtp:bUsePasv := .T.
oFtp:oUrl:cServer := cServer
oFtp:oUrl:cUserId := cUser
oFtp:oUrl:cPassword := cPassword
lRetorno := .F.
IF oFtp:Open( cUrl )
oFtp:Cwd( cRemotePath )
IF Tamanho == 0
aFiles := oFtp:ListFiles( cSource )
IF Len( aFiles ) > 0
Tamanho := aFiles[ 1, 2 ]
ENDIF
IF Tamanho == 0
SayScroll( "Não encontrada informação, tentando sem a informação!",, .T. )
Tamanho := 2000000 // apenas pro grafico
ENDIF
ENDIF
oFtp:exGauge := { | Pronto | GrafTempo( Pronto, Tamanho ) }
GrafTempo( "Baixando " + cSource )
IF oFtp:DownloadFile( cTarget, cSource )
lRetorno := .T.
ENDIF
oFtp:Close()
ELSE
cMsgErro := "Nao conectou ao servidor"
IF oFtp:SocketCon == NIL
cMsgErro += ", conexão nao iniciada"
ELSEIF hb_INetErrorCode( oFtp:SocketCon ) == 0
cMsgErro += ", resposta do servidor " + oFtp:cReply
ELSE
cMsgErro += ", erro na conexão " + hb_InetErrorDesc( oFtp:SocketCon )
ENDIF
SayScroll( cMsgErro,, .T. )
lRetorno := .F.
ENDIF
Mensagem()
RETURN lRetorno
FUNCTION UploadJPA( cSource, cTarget, cUser )
LOCAL cRemotePath, cMsgErro, lRetorno, Tamanho, oFtp, cServer, cPassword, cUrl, oUrl
hb_Default( @cUser, "xxx" )
cRemotePath := ""
IF "/" $ cTarget
cRemotePath := Substr( cTarget, 1, Rat( "/", cTarget ) - 1 )
cTarget := Substr( cTarget, Rat( "/", cTarget ) + 1 )
ENDIF
cServer := "ftp.xxxx.com.br"
cUser := "xxx"
cPassword := SenhaFtp()
cUrl := "ftp://" + cUser + ":" + cPassword + "@" + cServer
oUrl := tUrl():New( cUrl )
oFTP := tIPClientFtp():New( oUrl, .F. )
oFTP:nConnTimeout := 20000
oFTP:bUsePasv := .T.
IF At( "@", cUser ) > 0
oFTP:oUrl:cServer := cServer
oFTP:oUrl:cUserID := cUser
oFTP:oUrl:cPassword := cPassword
ENDIF
lRetorno := .F.
IF oFTP:Open( cUrl )
IF .NOT. Empty( cRemotePath )
oFtp:Cwd( cRemotePath )
ENDIF
Tamanho := fSize( cSource )
oFtp:exGauge := { | Pronto | GrafTempo( Pronto, Tamanho ) }
GrafTempo( "Enviando " + cSource )
IF oFtp:UploadFile( cSource, cTarget )
lRetorno := .T.
ENDIF
oFtp:Close()
ELSE
cMsgErro := "Não conectado ao servidor FTP"
IF oFTP:SocketCon == NIL
cMsgErro += ", conexão não inicializada"
ELSEIF hb_InetErrorCode( oFTP:SocketCon ) == 0
cMsgErro += ", resposta do servidor: " + oFTP:cReply
ELSE
cMsgErro += ", erro na conexão: "+ hb_InetErrorDesc( oFTP:SocketCon )
ENDIF
SayScroll( cMsgErro )
ENDIF
Mensagem()
RETURN lRetorno
Código: Selecionar todos
*+±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
function HTTP_PegaTamArq( cCaminho, cArq )
* retorna o tamanho de 1 arquivo existente no site q tem o c¢digo em PHP
*+±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
LOCAL oHTTP, cURL, nRET_BYTES := 0
LOCAL cHTML
if cArq == NIL
Return nRET_BYTES
elseif Empty( cArq )
Return nRET_BYTES
endif
cCaminho := if( cCaminho == NIL, "pastadatuahospedagem/podeseroutrapastaaki/", cCaminho)
cURL := 'http://www.teudominio.com.br/tamanhoArquivo.php?caminho=' + cCaminho + cArq
oHTTP:= TIpClientHttp():new( cURL )
if oHTTP:open()
cHTML := oHTTP:readAll()
if !EMPTY(cHTML)
if LEN(cHTML) > 0 .AND. LEN(cHTML) < 20
nRET_BYTES:=VAL(alltrim(cHTML)) //Alert('Tamanho:' + str(nRET_BYTES) )
endif
endif
endif
oHTTP:close()
return nRET_BYTES