/ / Téléchargez un fichier à partir d’Internet par programmation avec un événement Progress utilisant Delphi et Indy - delphi, delphi-7, download, indy

Téléchargez un fichier à partir d’Internet par programmation avec un événement Progress à l’aide de Delphi et Indy - delphi, delphi-7, download, indy

J'ai besoin d'un moyen de télécharger un fichier d'Internet à l'aide de Delphi via HTTP, Pour inclure un événement Progress, je cherche une méthode qui utilise les composants Indy.

J'utilise Delphi 7.

Merci d'avance.

Réponses:

20 pour la réponse № 1

J'ai "codé cet exemple, en utilisant un seul HTTP GET, avec Indy 10, en espérant que cela fonctionne aussi avec 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;