Delphi客户端通过FTP服务器上传或下载文件或图片方法由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“ftp服务器客户端程序”。
Delphi客户端通过FTP服务器上传或下载文件或图片方法
首先在服务器端建立FTP服务器,网上有这种类型的软件,安装好后,在客户端建立服务器连接,然后再上传或下载文件或图片。
一、服务器连接
procedure TForm1.ConnectButtonClick(Sender: TObject);begin if not IdFTP1.Connected then //如果与服务器断开连接
begin
try
IdFTP1.Username:=UserIDEdit.Text;
IdFTP1.Paword:=PawordEdit.Text;
IdFTP1.Host:=FtpServerEdit.Text;
IdFTP1.Connect;//Connect;
Except //异常处理
Application.MeageBox('服务器连接失败!','智博软件');
end;
ConnectButton.Enabled:=true;
if IdFTP1.Connected then
begin
ConnectButton.Caption:='断开';
DebugListBox.Items.Add('主机名为:'+IdFTP1.Host);
DebugListBox.Items.Add('连接成功');
ConnectButton.Default:=false;
end;
end
else
try
IdFTP1.Quit;//关闭客户端与服务器端的连接
finally
ConnectButton.Caption:='连接';
DebugListBox.Items.Add('连接失败');
ConnectButton.Enabled:=true;
ConnectButton.Default:=true;
end;
end;
二、文件或图片上传
Procedure TFrmMain.UploadFileCleck(Sender:TObject);
var
FileName : string;
Item : TListItem;
SendFileItem : TListItem;
begin
if not FTPClient.Connected then
exit;
if ListViewLocalFile.Selected =nil then
exit;
Item :=ListViewLocalFile.Selected;
ListViewSendFile.Clear;
//处理所有选中文件
while Item nil do
begin
SendFileItem := ListViewSendFile.Items.Add;
SendFileItem.Caption := Item.Caption;
//文件名
SendFileItem.SubItems.Add(Item.SubItems[1]);//文件大小
SendFileItem.SubItems.Add(LocaLPath);
//本地路径
SendFileItem.SubItems.Add('==>');
//图示
SendFileItem.SubItems.Add(RemotePath);//远程路径
SendFileItem.SubItems.Add('');
//状态
//下一个选中的项目
Item:=ListViewLocalFile.GetNextItem(Item,sdAll,[isSelected]);
end;
ListViewSendFile.Refresh;
//刷新传送文件列表
//传送文件
ListViewLocalFile.Enabled :=false;
DriveComboBox1.Enabled:=false;
ListViewRemoteFile.Enabled:=False;
IsTransFerring:=True;
try
//处理所有要传送的文件
while ListViewSendFile.Items.Count>0 do
begin
FileName:=ListViewSendFile.Item[0].Caption;
//文件名
ListViewSendFile.Item[0].SubItems[4]:='正在上传...';
FTPClient.Put(LocalPath+''+FileName);
//上传
DisplayRemoteFileList();
ListViewSendFile.items[0].Delect;
//传送完毕,删除待传送文件列表
ListViewSendFile.Refresh;
end;
//设置相关控件是否可用
ListViewLocalFile.Enabled:=True;
DriveComboBox1.Enabled:=True;
ListVieewRemoteFile.Enabled:=True;
IsTransferring:=False;
except
ListViewSendFile.Items[0].SubItems[4]:='上传错误!';
MeageDlg('上传文件发生错误!',mtError,[mbyes],0);
//设置相关控件是否可用
ListViewLocalFile.Enabled:=True;
DriveCombBox1.Enabled:=True;
ListViewRemoteFile.Enabled:=True;
IsTransferring:=False;
//没有传送状态
end;
end;
三、文件或图片下载
procedure TFrmMain.DownloadFileClick(Sender:TObject);
var
FileName :String;
Item ,SendFileItem : TListItem;
begin
if not FTPClient.Connected Then
//没有连接到服务器,退出
exit;
if ListViewRemoteFile.Selected;
//得到选中的文件
ListViewSendFile.Clear;
//清空要传送的文件列表
//处理所有选中的文件
While Item nil do
begin
SendFileItem :=ListViewSendFile.Items.Add;
//增加到列表
//列表项赋值
SendFileItem.Caption := Item.Caption;//文件名
SendFileItem.SubItems.Add(Item.SubItems[1]);//文件大小
SendFileItem.SubItems.Add(LocaLPath);
//本地路径
SendFileItem.SubItems.Add('
//图示
SendFileItem.SubItems.Add(RemotePath);
//远程路径
SendFileItem.SubItems.Add('');
//下一个选中的项目
Item:=ListViewRemoteFile.GetNextItem(Item,sdAll,[isSelected]);
end;
ListViewSendFile.Refresh;
//刷新传送文件列表
//传送文件
ListViewRemoteFile.Enabled:=false;
//禁止操作相关控件
IsTransferring:=True;
//设置正在传送
try
//处理所有要传送的文件
while ListViewSendFile.Items.Count >0 do
begin
FileName := ListViewSendFile.Items[0].Caption;
//文件名
ListViewSendFile.Items[0].SubItems[4]:='正在下载...';
ListViewSendFile.Refresh;
//刷新传送文件列表
if FileExists(FileName)then //判断文件是否存在begin
if MeageDlg('文件己存在,继续下载吗?',mtConfirmation,[mbYes,mbNo],0)=mrYes then
FTPClient.Get(FileName,LocalPath+''+FileName,false,true)
//续传
else
FTPClient.Get(FileName,LocalPath+''+FileName,true,False);//覆盖
end
else
FTPClient.Get(FileName,LocalPath+''+FileName,false);
//下载
ListViewSendFile.items[0].Delect;
//传送完毕,删除待传送文件列表
ListViewSendFile.Refresh;
//刷新待传送列表
DisplayLocalFileList();
//刷新本地文件列表
end;
ListViewRemoteFile.Enabled:=true;
IsTransferring:=False;
//没有传送状态
except
ListViewSendFile.Items[0].SubItems[4]:='下载错误';
ListViewSendFile.Refresh;
//刷新待传送文件列表
MeageDlg('下载文件发生错误!',mtError,[nbYes],0);
ListViewRemoteFile.Enabled:=True;
IsTransferring:=False;
//没有传送状态
end;
end;以上代码在Delphi7中调试通过。