2,496
社区成员
发帖
与我相关
我的任务
分享
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdAntiFreezeBase, IdAntiFreeze, IdBaseComponent,
IdComponent, IdTCPConnection, IdTCPClient, IdFTP, ComCtrls, IdFTPCommon;
type
TForm1 = class(TForm)
IdFTP1: TIdFTP;
IdAntiFreeze1: TIdAntiFreeze;
Edit1: TEdit;
Button1: TButton;
ProgressBar1: TProgressBar;
OpenDialog1: TOpenDialog;
Button2: TButton;
procedure IdFTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCountMax: Integer);
procedure IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);
procedure IdFTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
AbortTransfer: Boolean;
TransferrignData: Boolean;
BytesToTransfer: LongWord;
STime: TDateTime;
public
{ Public declarations }
end;
var
Form1: TForm1;
AverageSpeed: Double = 0;
implementation
{$R *.dfm}
procedure TForm1.IdFTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCountMax: Integer);
begin
TransferrignData := true;
AbortTransfer := false;
STime := Now;
if AWorkCountMax > 0 then
begin
ProgressBar1.Max := AWorkCountMax;
end else
begin
ProgressBar1.Max := BytesToTransfer;
end;
AverageSpeed := 0;
end;
procedure TForm1.IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);
Var
S: String;
TotalTime: TDateTime;
H, M, Sec, MS: Word;
DLTime: Double;
begin
TotalTime := Now - STime;
DecodeTime(TotalTime, H, M, Sec, MS);
Sec := Sec + M * 60 + H * 3600;
DLTime := Sec + MS / 1000;
if DLTime > 0 then
AverageSpeed := (AWorkCount/1024)/DLTime;
S := FormatFloat('0.00 KB/s', AverageSpeed);
if AbortTransfer then IdFTP1.Abort;
ProgressBar1.Position := AWorkCount;
//tvPlanets.DataController.Values[DownloadID,2] := FormatFloat('#,##0',AWorkCount/1024)+'/'+FormatFloat('#,##0',BytesToTransfer/1024);
AbortTransfer := false;
application.ProcessMessages;
end;
procedure TForm1.IdFTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode);
begin
BytesToTransfer := 0;
TransferrignData := false;
ProgressBar1.Position := 0;
AverageSpeed := 0;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if opendialog1.Execute then
begin
Edit1.Text := opendialog1.FileName;
if Trim(Edit1.Text)='' then
begin
MessageBox(Handle,'请选择要上传的文本文件','提示',MB_ICONINFORMATION);
Exit;
end;
if not IdFTP1.Connected then
begin
IdFTP1.Username := 'ftpuser';
IdFTP1.Password := 'ftpuser01';
IdFTP1.Host := '192.168.27.102';
IdFTP1.Connect;
//IdFTP1.ChangeDir('/orasource/zbdoc');
end;
IdFTP1.TransferType := ftBinary;
BytesToTransfer := IdFTP1.Size(trim(edit1.Text));
try
IdFTP1.put(trim(edit1.Text),ExtractFileName(Edit1.text), true);
finally
IdFTP1.Disconnect;
end;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if not IdFTP1.Connected then
begin
IdFTP1.Username := 'ftpuser';
IdFTP1.Password := 'ftpuser01';
IdFTP1.Host := '192.168.27.102';
IdFTP1.Connect;
//IdFTP1.ChangeDir('/orasource/zbdoc');
end;
IdFTP1.TransferType := ftBinary;
BytesToTransfer := IdFTP1.Size('OA报销模块操作手册.doc');
try
IdFTP1.Get('OA报销模块操作手册.doc','c:\OA报销模块操作手册.doc', True);
finally
IdFTP1.Disconnect;
end;
end;
end.