需要做一个类似像印象笔记的软件,其中用到ftp上传,摸索了一下,代码如下:
implementation
uses IdFTPCommon; //引用的单元
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);//连接ftp服务器
var
i: integer;
tr: Tstrings;
begin
IdFTP1.Quit;
tr := TStringlist.Create;
IdFTP1.Host := hostTxt.Text; //FTP服务器地址
IdFTP1.Port := StrToInt(PortTxt.Text); //FTP服务器端口号
IdFTP1.Username := UserTxt.Text; //FTP服务器用户名
IdFTP1.Password := pwdTxt.Text; //FTP服务器密码
IdFTP1.Connect(); //连接到ftp
IdFTP1.ChangeDir('music/clips');//需要上传的目标文件夹
IdFTP1.List(tr); //得到目录下所有文件列表
FFTxt.Items.Assign(tr);
tr.Free;
self.FFTxt.Items.Add(IdFTP1.RetrieveCurrentDir);
end;
procedure TForm1.Button2Click(Sender: TObject);//上传文件
var
if IdFTP1.Connected then begin
try
IdFTP1.TransferType := ftBinary;
IdFTP1.Put(AnsiToUtf8('d:\Westworld.S02E02.mp4'), AnsiToUtf8('1.mp4'));
finally
//完成清除工作
end;
end;
end;
procedure TForm1.IdFTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;//开始传输
const AWorkCountMax: Integer);
begin
ProgressBar1.Max:=AWorkCountMax;
end;
procedure TForm1.IdFTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode);//传输完成
begin
showmessage('上传成功!');
ProgressBar1.Position:=0;
end;
procedure TForm1.IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode;//正在传输
const AWorkCount: Integer);
begin
if AWorkMode = wmWrite then//判断是否是上传操作,下载(wmRead)
begin
ProgressBar1.Position:=AWorkCount;
Application.ProcessMessages;//这一句很重要,放置界面假死。
end;
end;