GARANTIR DESCONTO

Fórum IdFtp - como Parar e Retomar download? #353645

14/02/2008

0

Tenho uma aplicação que iniciar um download de arquivos no meu FTP, que esta funcionando beleza, utilizando o IdFTP versão 9.

A aplicação funciona perfeitamente, porém necessito criar um tipo de Resume e Pause para o download.
Ex: se o arquivo for um 20 Mb e este com o progresso de 95¬ e a conexão do cliente cair, o mesmo perderá o download, se eu criar um tipo de segurança com Resume e Pause como exemplo posso retomar o downloa de onde parado.

Alguem fez algo parecido?

:)


Rodrigoprado

Rodrigoprado

Responder

Posts

14/02/2008

Massuda

Nunca fiz, mas acho que é assim que (deveria) funcionar:[list:fecd27fead][*:fecd27fead]Depois de conectar/fazer login no servidor FTP, verifique o valor de TIdFTP.CanResume. Se for True, o servidor permite continuar downloads interrompidos. Note que isso depende exclusivamente do servidor, não há nada que você possa fazer se CanResume for False além de baixar novamente o arquivo desde o começo.[*:fecd27fead]Indique ao chamar TIdFTP.Get que pode continuar o download; isso é feito através do parametro AResume do TIdFTP.Get:
procedure Get(const ASourceFile: string; ADest: TStream; AResume: Boolean); overload;
procedure Get(const ASourceFile: string; const ADestFile: string; const ACanOverwrite: boolean; AResume: Boolean); overload;
[/list:u:fecd27fead]Para parar um download, use TIdFTP.Abort.


Responder

Gostei + 0

14/02/2008

Rodrigoprado

então deixo habilitado pra true na hora de pegar o arquivo, porém durante o download eu devo para o mesmo, mas nao funciona, preciso de um exemplo que funcione mesmo o código...

isso ja havia tentado, mas valeu..


Responder

Gostei + 0

14/02/2008

Massuda

então deixo habilitado pra true na hora de pegar o arquivo, porém durante o download eu devo para o mesmo, mas nao funciona
Não depende só do seu programa, depende também do servidor que você está usando. Você verificou se TIdFTP.CanResume está True?

De qualquer forma, se quiser, mostre o código que você está usando.

Outra coisa... Você está usando o Indy que veio com seu Delphi ou você atualizou ele (versão 9.0.18 ou mais recente)?


Responder

Gostei + 0

14/02/2008

Paullsoftware

Note que isso depende exclusivamente do servidor, não há nada que você possa fazer se CanResume for False além de baixar novamente o arquivo desde o começo.
Interessante, vou estudar essa possibilidade, antes eu pensava que os gerenciadores guardavam em algum lugar (localmente) essa informação pra poder continuar... vou dar uma pesquisava no assunto, você é o kra Massuda :lol:


Responder

Gostei + 0

14/02/2008

Rodrigoprado

INDY 9.00.10

IdFTP.CanResume é True
ResumeSupported é True
depois de conectado logicamente meu servidor permite copiar.



partindo pela lógica de que o arquivo nao exista no meu destino ainda.
FrmAtualiza.IdFTP.get(arquivo, diretorio, False, True);
uso este método

e paro em 1¬ com o abort.

e para retomar nao ha meios.. ja everti os método para tentar retomar
(arquivo, diretorio, True, True);
(arquivo, diretorio, False, False);
(arquivo, diretorio, False, True);
(arquivo, diretorio, True, False);

supondo que o arquivo tenha 20 mb e parei 1¬ em 512 kb, o mesmo ja deva existir.. no destino logo nao posso sobreescrevelo e sim continuar.

bom talves eu tenha iniciado o get errado ou ao contrário.

Massuda acho que so testando mesmo para termos certeza das propriedades...

quando descobrirmos isso servirar para muitas outras coisas...
:o


Responder

Gostei + 0

15/02/2008

Weber

Eu uso o idFtp que veio junto do o D7, o resume funciona perfeitamente, basta colocar o componente na tela e mandar fazer o download, não precisa configurar nada, é necessário apenas indicar no .Get que você quer usar o resume.

Talvez seu servidor de internet não de suporte a isto, ja tentou usar um programa de ftp para verificar se o mesmo faz o resume.


Responder

Gostei + 0

15/02/2008

Rodrigoprado

ok, mas então poste ai seu código..

o evento exemplificando qundo inicia o download, ai em seguida quando para e quando reinicia.

vlw

estou testando por localhost, concerteza fiz algo errado, mas nao consego ver onde.


Responder

Gostei + 0

15/02/2008

Rodrigoprado

Iniciar o down:
IdFTP.get(arquivo, diretorio, False, IdFTP.ResumeSupported);

Parar:
IdFTP.Abort;

Reiniciar:
IdFTP.get(arquivo, diretorio, False, IdFTP.ResumeSupported);

É assim que estou utilizando... bom se alguem souber ai o fato eh que nao tenho certeza se o comando de reiniciar eh assim.

Meu servidor permite retormar download.


Responder

Gostei + 0

15/02/2008

Weber

Acabei de testar, funciona perfeitamente, usando a versão original que veio com o Delphi7

procedure TForm1.Button1Click(Sender: TObject);
begin
  if not IdFTP1.Connected then
    IdFTP1.Connect;
  IdFTP1.Get(´arquivo´,´c:\temp\arquivo´,false,true);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  IdFTP1.Abort;
end;


O servidor tem suporte à resume?
Você diz estar usando localhost, seu servidor FTP local tem suporte à resume?


Responder

Gostei + 0

15/02/2008

Rodrigoprado

tem sim

após conectado eu verifico pelas propriedades

idFTP.CanResume
idFTP.ResumeSupported

as mesmas retornam True;

enfim, partindo desta sua idéia

INICIAR -> IdFTP1.Get(´arquivo´,´c:\temp\arquivo´,false,true);
ABORTAR -> IdFTP1.Abort;

e para REINICIAR seria este mesmo método?
IdFTP1.Get(´arquivo´,´c:\temp\arquivo´,false,true);


Responder

Gostei + 0

15/02/2008

Rodrigoprado

testo pelo LocalHost e tb pelo meu servidor ftp..

ambos tem suporte.


Responder

Gostei + 0

15/02/2008

Paullsoftware

testo pelo LocalHost e tb pelo meu servidor ftp.. ambos tem suporte.
você usa que servidor local??? IIS ??? se for, como faço pra habilitar o acesso ao ftp com ele, eu só consigo entrar no localhost assim:

quando digito ftp://localhost

eu vejo normal o site, mais sempre que tento conectar com o IdFtp pra testar umas rotinas de atualização não consigo, sempre da erro de conexão... pode me ajudar? 8)


Responder

Gostei + 0

15/02/2008

Rodrigoprado

estou usando um programa bem simples chamado cezarFTP, pelo iis tb nao consigo testar, sempre depois de alguma atualização do windows meu servidor ftp ou http do IIS nao inicia, digo isso tentando iniciar o próprio serviço no service.msc.

então corri a traz de outro cliente.

vc cria um perfil e em seguida escolhe os diretórios para compartilhar ai funciona na boa, para localhost ou 127.0.0.1.

ou vc pode tentar o apache, infalivel hehe

pow cara to com meu Idftp funcionando mas essa parte de start e pause download.. nao vai velho.......... que droga.. :(


Responder

Gostei + 0

15/02/2008

Rodrigoprado

seria...

ftp://ip/


Responder

Gostei + 0

15/02/2008

Paullsoftware

[quote=´rodrigoprado´]
ou vc pode tentar o apache, infalivel hehe
quote]é o apache não dá... tem que ser o IIS mesmo, pois, tenho um Servidor de Aplicação SOAP rodando no servidor e já ta tudo configuradinho e funcionando no IIS... valeu pela dica


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar