GARANTIR DESCONTO

Fórum Download com IDFTP #473224

18/03/2014

0

bom galera, to tentando fazer o download com o componente idftp da paleta indy, bom, o download até faz só que os arquivos são baixados corrompidos, o que será que acontece?se alguém já passou por isso ou sabe como resolver, aí vai o código que utilizo!

function TFrmVisualiza.ftpget(dirRemotro, DirLocal, filefrom, fileto: string) : string;
var
  ms: TMemoryStream;
begin
  ms := TMemoryStream.Create;
  try
    try
      ftp.Connect();
      AssErt(ftp.Connected);
      ftp.ChangeDir(dirRemotro); // Definir a pasta no servidor
      ftp.Get(filefrom, DirLocal+fileto, true); // Receber o arquivo do servidor
      ShowMessage('Arquivo Recebido');
      Result :=  DirLocal+fileto;
    finally
      ms.Free;
    end;
  except
    ShowMessage('Uma tentativa de receber um arquivo do servidor com falha');
 end;


e pra chamar a função:

ftpget(CaminhoServidor,CaminhoLocal, listaFile.Items[listaFile.ItemIndex], 'Temp'+listaFile.Items[listaFile.ItemIndex])


desde já agradeço!
Ivan Alves

Ivan Alves

Responder

Posts

24/03/2014

Paulo Pinto

eu faço em http... se te ajudar..

procedure TFLogin.BaixaNovaVersao(LinkVersao, Nome: String);
var
  Pasta, Arquivo: String;
  IdHTTP1: TIdHTTP;
  Stream: TMemoryStream;
begin
  Pasta := ExtractFilePath(ParamStr(0)) + 'Atualizacoes\';
  Arquivo := ExtractFileName(ParamStr(0));

  if not DirectoryExists(Pasta) then
    MkDir(Pasta);

  IdHTTP1 := TIdHTTP.Create(nil);
  Stream := TMemoryStream.Create;
  try
    pb.Visible := True;
    Application.ProcessMessages;
    with IdHTTP1 do
    begin
      OnWork := IdHTTP1Work;
      OnWorkBegin := IdHTTP1WorkBegin;
      OnWorkEnd := IdHTTP1WorkEnd;

      try
        AtualizacaoemAndamento := True;

        Get(LinkVersao, Stream);
        Stream.SaveToFile(Pasta + Arquivo); // salva o arquivo no hd
        InstalaNovaVersao(Pasta + Arquivo);
      except
        on e: exception do
          MessageBoxError(e.Message);
      end;
    end;
  finally
    AtualizacaoemAndamento := False;
    IdHTTP1.Free;
    pb.Visible := False;
  end;
end;


pb é um progressbar

OnWork := IdHTTP1Work;
OnWorkBegin := IdHTTP1WorkBegin;
OnWorkEnd := IdHTTP1WorkEnd;


Responder

Gostei + 0

25/03/2014

Ivan Alves

Paulo Alexandre, muito obrigado cara pela ajuda, vou testar dessa forma que vc faz, mais acabei atualizando a versão do indy e meus problemas foram resolvidos, devia ser algum bug, pq os arquivos eram upados com erro, bom, de qualquer forma obrigado pela atenção! Abraços
Responder

Gostei + 0

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

Aceitar