Forum > Networking and Web Programming
Is it possible to download file with indy using progressbar ?
(1/1)
seba22:
Welcome,
Is it possible to download file using indy (GET) with progressbar ?
On my website i use content-length header what have full file size.
I think i can access to it using indy, but how create progressbar ?
Where can i find how many data are downloaded ?
Regards
seba22:
I wrote that.
It was very easy.
I didn't see that onworkbegin send filesize.
This is code, i tested under linux.
--- Code: ---unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
ComCtrls, StdCtrls, IdHTTP, IdComponent, IdAntiFreeze;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
IdAntiFreeze1: TIdAntiFreeze;
IdHTTP1: TIdHTTP;
Label1: TLabel;
ProgressBar1: TProgressBar;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode;
AWorkCount: Int64);
procedure IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
AWorkCountMax: Int64);
procedure IdHTTP1WorkEnd(ASender: TObject; AWorkMode: TWorkMode);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{ TForm1 }
procedure TForm1.IdHTTP1WorkEnd(ASender: TObject; AWorkMode: TWorkMode);
begin
//label1.caption:='abbbaa';
end;
procedure TForm1.Button1Click(Sender: TObject);
var
pk:string;
begin
pk:=idhttp1.Get('http://download.thinkbroadband.com/20MB.zip');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
end;
procedure TForm1.IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode;
AWorkCount: Int64);
begin
label1.caption:=inttostr(aworkcount);
progressbar1.position:=aworkcount;
end;
procedure TForm1.IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
AWorkCountMax: Int64);
begin
progressbar1.max:=AWorkCountMax;
end;
initialization
{$I unit1.lrs}
end.
--- End code ---
xenblaise:
nice post :D
Navigation
[0] Message Index