/ / Изтегляне на файл от интернет програмирано с прогрес, използвайки Delphi и Indy - delphi, delphi-7, изтегляне, indy

Изтеглете файла от интернет програмирано с прогрес "Прогрес", като използвате Delphi и Indy - delphi, delphi-7, изтегляне, indy

Имам нужда от начин да изтегля файл от Интернет, като използвам Delphi чрез HTTP, Включително събитие "Прогрес", търся метод, който използва компонентите на Indy.

Аз използвам Делфи 7.

Благодаря предварително.

Отговори:

20 за отговор № 1

Аз кодирах този пример, използвайки само един HTTP GET, с Indy 10, надявам се, че работи и с Indy 9:

uses
{...} IdHTTP, IdComponent;

type
TFormMain = class(TForm)
{...}
private
{...}
procedure HttpWork(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: Int64);
end;
{...}

procedure TFormMain.Button1Click(Sender: TObject);
var
Http: TIdHTTP;
MS: TMemoryStream;
begin
Http := TIdHTTP.Create(nil);
try
MS := TMemoryStream.Create;
try
Http.OnWork:= HttpWork;

Http.Get("http://live.sysinternals.com/ADExplorer.exe", MS);
MS.SaveToFile("C:ADExplorer.exe");

finally
MS.Free;
end;
finally
Http.Free;
end;
end;

procedure TFormMain.HttpWork(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: Int64);
var
Http: TIdHTTP;
ContentLength: Int64;
Percent: Integer;
begin
Http := TIdHTTP(ASender);
ContentLength := Http.Response.ContentLength;

if (Pos("chunked", LowerCase(Http.Response.TransferEncoding)) = 0) and
(ContentLength > 0) then
begin
Percent := 100*AWorkCount div ContentLength;

MemoOutput.Lines.Add(IntToStr(Percent));
end;
end;