delphi实现FTP上传与下载


本文整理自网络,侵删。

 
         Unit1;
         interface
         uses
          Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
         Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
         IdTCPClient, IdFTP;
         type
        TForm1 = class(TForm)
        IdFTP1: TIdFTP;
        Button1: TButton;
       Memo1: TMemo;
       Edit1: TEdit;
      Button2: TButton;
     Label1: TLabel;
     Button3: TButton;
     OpenDialog1: TOpenDialog;
     procedure Button1Click(Sender: TObject);
     procedure Button2Click(Sender: TObject);
     procedure Button3Click(Sender: TObject);
     procedure IdFTP1Status(ASender: TObject; const AStatus: TIdStatus;
       const AStatusText: String);
   private
     { Private declarations }
   public
     { Public declarations }
   end;
var
   Form1: TForm1;
implementation
uses IdFTPList, IdFTPCommon;
{$R *.dfm}
{
本程序是一个ftp   demo程序,我用windows信息服务在本机建立了一个ftp服务,
本机IP:192.168.10.99
用户名:cc
密码:1
}
procedure TForm1.Button1Click(Sender: TObject);
var
   tr : Tstrings;
begin   //连接
   tr := TStringlist.Create;
   IdFTP1.Host := '192.168.10.99'; //FTP服务器地址
   IdFTP1.Username := 'user'; //FTP服务器用户名
   IdFTP1.Password := 'user'; //FTP服务器密码
   IdFTP1.Connect();   //连接到ftp
   Edit1.Text := IdFTP1.RetrieveCurrentDir;//得到初始目录
   IdFTP1.ChangeDir('client'); //进入到client子目录
   //IdFTP1.ChangeDir('..'); //回到上一级目录
   IdFTP1.List(tr); //得到client目录下所有文件列表
   Memo1.Lines.Assign(tr);
   tr.Free;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
   tt :TIdFTPListItems;
   t : TIdFTPListItem;
   i : integer;
   tfname : String;
begin   //下载
   Label1.Caption := IdFTP1.DirectoryListing.Items[0].FileName;
   IdFTP1.TransferType := ftBinary; //指定为二进制文件   或文本文件ftASCII
   for i:=0 to IdFTP1.DirectoryListing.Count-1 do
   begin
     tt := IdFTP1.DirectoryListing; //得到当前目录下文件及目录列表
     t := tt.Items; //得到一个文件相关信息
     Label1.Caption :=t.Text;   //取出一个文件信息内容
     tfname := t.FileName;
     showmessage(t.OwnerName+'   '+t.GroupName+'   '+t.FileName+'   '+t.LinkedItemName);
     if IdFTP1.DirectoryListing.Items.ItemType = ditFile then //如果是文件
     begin
       IdFTP1.Get(tfname,'d:\FTPtest\'+tfname,True,True); //下载到本地,并为覆盖,且支持断点续传
     end;
   end;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
   fi : string;
begin   //上传
   if OpenDialog1.Execute then
   begin
     fi := OpenDialog1.FileName;
     IdFTP1.Put('f:\测试文档样本.rar','测试文档样本.rar');//上传,
   end;
end;
procedure TForm1.IdFTP1Status(ASender: TObject; const AStatus: TIdStatus;
   const AStatusText: String);
begin
   {case   AStatus of
     hsResolving   : showmessage('hsResolving');
     hsConnecting: showmessage('hsConnecting');
     hsConnected: showmessage('hsConnected');
     hsDisconnecting: showmessage('hsDisconnecting');
     hsDisconnected: showmessage('hsDisconnected');
     hsStatusText: showmessage('hsStatusText');  
     ftpTransfer: showmessage('文件传送完毕。');
     ftpReady: showmessage('准备传送文件....');
     ftpAborted: showmessage('传送失败');
   end;         }
   //showmessage(AStatusText);
end;
end.

相关阅读 >>

Delphi整理一(基础知识)

Delphi 删除文件函数支持撤销删除

Delphi not 与整数

Delphi计算两个时间差

Delphi bmp转换png

Delphi 通过api强制tedit仅接受数字输入

Delphi 实现文件占坑

Delphi windows 编程[23] - 快捷键资源

Delphi richedit控件的用法

Delphi pagecontrol当前页可视

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...