各位大侠:
在delphi中如何读取ftp上的文件?
例如:ftp服务器:ftp://192.9.200.100上有个文件sam.exe,ftp登陆用户:01,密码:01;如何在form1上单击button1,读取(运行)sam.exe.文件。
谢谢。
最好说的详细点。
在delphi中如何读取ftp上的文件?
例如:ftp服务器:ftp://192.9.200.100上有个文件sam.exe,ftp登陆用户:01,密码:01;如何在form1上单击button1,读取(运行)sam.exe.文件。
谢谢。
最好说的详细点。
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, OleServer, Outlook8, ExtCtrls, ComCtrls, Psock, NMFtp;type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
btnConnect: TButton;
btnDisconnect: TButton;
btnDir: TButton;
ListBox1: TListBox;
btnUpload: TButton;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
btnDownload: TButton;
Edit3: TEdit;
Label3: TLabel;
Label4: TLabel;
Edit4: TEdit;
StatusBar1: TStatusBar;
Bevel1: TBevel;
NMFTP1: TNMFTP;
Edit5: TEdit;
btnCD: TButton;
Label5: TLabel;
Edit6: TEdit;
Edit7: TEdit;
btnRename: TButton;
Label6: TLabel;
Edit8: TEdit;
btnDelete: TButton;
procedure FormCreate(Sender: TObject);
procedure btnConnectClick(Sender: TObject);
procedure btnDisconnectClick(Sender: TObject);
procedure NMFTP1Connect(Sender: TObject);
procedure NMFTP1Disconnect(Sender: TObject);
procedure NMFTP1Success(Trans_Type: TCmdType);
procedure NMFTP1Failure(var Handled: Boolean; Trans_Type: TCmdType);
procedure btnDirClick(Sender: TObject);
procedure NMFTP1ListItem(Listing: String);
procedure btnCDClick(Sender: TObject);
procedure btnUploadClick(Sender: TObject);
procedure NMFTP1PacketSent(Sender: TObject);
procedure btnDownloadClick(Sender: TObject);
procedure NMFTP1PacketRecvd(Sender: TObject);
procedure btnRenameClick(Sender: TObject);
procedure btnDeleteClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.FormCreate(Sender: TObject);
begin
//init
Edit1.Text:='10.13.101.113';
Edit2.Text:='21';
//ftp time out value
NMFTP1.TimeOut:=2000;
//edit property
Edit3.Text:='';
Edit4.Text:='';
Edit5.Text:='';
Edit6.Text:='';
Edit7.Text:='';
Edit8.Text:='';
end;procedure TForm1.btnConnectClick(Sender: TObject);
begin
// server info
NMFTP1.Host := Edit1.Text;
NMFTP1.Port := StrToInt(Edit2.Text);
NMFTP1.UserID := 'shihongchun';
NMFTP1.Password := 'lixiaodan';
NMFTP1.Connect;
end;procedure TForm1.btnDisconnectClick(Sender: TObject);
begin
NMFTP1.Disconnect;
end;procedure TForm1.NMFTP1Connect(Sender: TObject);
begin
StatusBar1.SimpleText := 'Connected';
end;procedure TForm1.NMFTP1Disconnect(Sender: TObject);
begin
StatusBar1.SimpleText := 'Disconnected';
end;procedure TForm1.NMFTP1Success(Trans_Type: TCmdType);
begin
Case Trans_Type of
cmdChangeDir: StatusBar1.SimpleText := 'ChangeDir success';
cmdMakeDir: StatusBar1.SimpleText := 'MakeDir success';
cmdDelete: StatusBar1.SimpleText := 'Delete success';
cmdRemoveDir: StatusBar1.SimpleText := 'RemoveDir success';
cmdList: StatusBar1.SimpleText := 'List success';
cmdRename: StatusBar1.SimpleText := 'Rename success';
cmdUpRestore: StatusBar1.SimpleText := 'UploadRestore success';
cmdDownRestore: StatusBar1.SimpleText := 'DownloadRestore success';
cmdDownload: StatusBar1.SimpleText := 'Download success';
cmdUpload: StatusBar1.SimpleText := 'Upload success';
cmdAppend: StatusBar1.SimpleText := 'UploadAppend success';
cmdReInit: StatusBar1.SimpleText := 'ReInit success';
cmdAllocate: StatusBar1.SimpleText := 'Allocate success';
cmdNList: StatusBar1.SimpleText := 'NList success';
cmdDoCommand: StatusBar1.SimpleText := 'DoCommand success';
end;
end;procedure TForm1.NMFTP1Failure(var Handled: Boolean; Trans_Type: TCmdType);
begin
Case Trans_Type of
cmdChangeDir: StatusBar1.SimpleText := 'ChangeDir failure';
cmdMakeDir: StatusBar1.SimpleText := 'MakeDir failure';
cmdDelete: StatusBar1.SimpleText := 'Delete failure';
cmdRemoveDir: StatusBar1.SimpleText := 'RemoveDir failure';
cmdList: StatusBar1.SimpleText := 'List failure';
cmdRename: StatusBar1.SimpleText := 'Rename failure';
cmdUpRestore: StatusBar1.SimpleText := 'UploadRestore failure';
cmdDownRestore: StatusBar1.SimpleText := 'DownloadRestore failure';
cmdDownload: StatusBar1.SimpleText := 'Download failure';
cmdUpload: StatusBar1.SimpleText := 'Upload failure';
cmdAppend: StatusBar1.SimpleText := 'UploadAppend failure';
cmdReInit: StatusBar1.SimpleText := 'ReInit failure';
cmdAllocate: StatusBar1.SimpleText := 'Allocate failure';
cmdNList: StatusBar1.SimpleText := 'NList failure';
cmdDoCommand: StatusBar1.SimpleText := 'DoCommand failure';
end;end;procedure TForm1.btnDirClick(Sender: TObject);
begin
//clear old info
ListBox1.Items.Clear;
//Dir
try
NMFTP1.List;
except
//error trap
end;end;procedure TForm1.NMFTP1ListItem(Listing: String);
begin
//add dir
ListBox1.Items.Add(Listing);
end;procedure TForm1.btnCDClick(Sender: TObject);
begin
//change dir
Try
NMFTP1.ChangeDir(Edit5.Text);
Except
end;
end;procedure TForm1.btnUploadClick(Sender: TObject);
var
localfname:string;
remotefname:string;
begin
//UPLOAD
if OpenDialog1.Execute then
begin
localfname:=OpenDialog1.FileName;
remotefname:=Edit3.Text;
if remotefname='' then
remotefname:=extractfilename(localfname);
try
NMFTP1.Upload(localfname, remotefname);
except
end;
end;
end;procedure TForm1.NMFTP1PacketSent(Sender: TObject);
begin
//show percent
StatusBar1.SimpleText :=
inttostr(round((NMFTP1.BytesSent/NMFTP1.BytesTotal)*100))+'%';
end;procedure TForm1.btnDownloadClick(Sender: TObject);
var
localfname:string;
remotefname:string;
begin
if SaveDialog1.Execute then
begin
localfname:=SaveDialog1.FileName;
remotefname:=Edit4.Text;
if remotefname='' then
exit;
try
NMFTP1.Download(remotefname, localfname);
except
end;
end;
end;procedure TForm1.NMFTP1PacketRecvd(Sender: TObject);
begin
StatusBar1.SimpleText :=
inttostr((Round((NMFTP1.BytesRecvd/NMFTP1.BytesTotal)*100)))+'%';
end;procedure TForm1.btnRenameClick(Sender: TObject);
var
sourfname:string;
dentfname:string;
begin
sourfname:=Edit6.Text;
if sourfname='' then
exit;
dentfname:=Edit7.Text;
if dentfname='' then
exit;
try
NMFTP1.Rename(sourfname, dentfname);
except
end;
end;procedure TForm1.btnDeleteClick(Sender: TObject);
var
remotefname:string;
begin
//delete
remotefname:=Edit8.Text;
if remotefname='' then
exit;
try
NMFTP1.Delete(remotefname);
except
end;
end;end.