打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
delphi 远程传输文件汇总
该章是一系列的文章,百度搜索<<谈Delphi编程中"流"的应用>>绝对好文

第二篇是关于delphi中使用FTP服务器进行文件传输的,来源不详


Delphi客户端通过FTP服务器上传或下载文件或图片方法
首先在服务器端建立FTP服务器,网上有这种类型的软件,安装好后,在客户端建立服务器连接,然后再上传或下载文件或图片。
一、服务器连接
procedure TForm1.ConnectButtonClick(Sender: TObject);
begin
 if not IdFTP1.Connected then  //如果与服务器断开连接
 begin
 try
   IdFTP1.Username:=UserIDEdit.Text;
   IdFTP1.Password:=PasswordEdit.Text;
   IdFTP1.Host:=FtpServerEdit.Text;
   IdFTP1.Connect;  //Connect;
 Except  //异常处理
   Application.MessageBox('服务器连接失败!','智博软件');
 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]:='上传错误!';
      MessageDlg('上传文件发生错误!',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 MessageDlg('文件己存在,继续下载吗?',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;   //刷新待传送文件列表
      MessageDlg('下载文件发生错误!',mtError,[nbYes],0);
      ListViewRemoteFile.Enabled:=True;
      IsTransferring:=False;    //没有传送状态
      end;
    end;
以上代码在Delphi7中调试通过。
 
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
[2]Telerik Extensions for ASP.NET MVC 中文教程(2)
ListView“表格编写”与“增,删,改”功能解析。
indy实现ftp
用递归方法实现读取文件夹下所有文件信息 - GIS穆拉丁 - 博客园
如何制作自动更新程序?
winform下用FileStream实现多文件上传
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服