请问如何使用TIdFtp在 Ftp服务器的根目录下再创建一个 F001\ 目录?(server 使用iis的ftp ) 多谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 给你一个完整的单元unit FTPServerUnit;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Mask, SkinBoxCtrls, SkinCtrls, DynamicSkinForm, FileCtrl, OverbyteIcsWndControl, OverbyteIcsFtpSrv, OverbyteIcsFtpSrvC, OverbyteIcsWSocket, OverbyteIcsWinsock, bsSkinBoxCtrls, bsSkinCtrls, BusinessSkinForm, bsSkinData;type TFTPServerForm = class(TForm) DSF: TspDynamicSkinForm; FtpServer1: TFtpServer; bsCompressedStoredSkin1: TbsCompressedStoredSkin; bsSkinData1: TbsSkinData; bsBusinessSkinForm1: TbsBusinessSkinForm; bsSkinLabel1: TbsSkinLabel; bsSkinLabel2: TbsSkinLabel; bsSkinLabel3: TbsSkinLabel; bsSkinLabel4: TbsSkinLabel; bsSkinLabel5: TbsSkinLabel; StartButton: TbsSkinButton; StopButton: TbsSkinButton; FilenameEdit1: TbsSkinEdit; UserEdit: TbsSkinEdit; BEdit: TbsSkinEdit; PassEdit: TbsSkinPasswordEdit; PortEdit: TbsSkinNumericEdit; bsSkinSpeedButton1: TbsSkinSpeedButton; bsSkinPanel1: TbsSkinPanel; Memo1: TbsSkinMemo2; bsSkinScrollBar1: TbsSkinScrollBar; CheckBox1: TbsSkinCheckRadioBox; procedure FtpServer1Authenticate(Sender: TObject; Client: TFtpCtrlSocket; UserName, Password: TFtpString; var Authenticated: Boolean); procedure StartButtonClick(Sender: TObject); procedure FtpServer1ChangeDirectory(Sender: TObject; Client: TFtpCtrlSocket; Directory: TFtpString; var Allowed: Boolean); procedure FtpServer1Start(Sender: TObject); procedure FtpServer1Stop(Sender: TObject); procedure StopButtonClick(Sender: TObject); procedure FtpServer1ClientConnect(Sender: TObject; Client: TFtpCtrlSocket; AError: Word); procedure FtpServer1ClientDisconnect(Sender: TObject; Client: TFtpCtrlSocket; AError: Word); procedure FtpServer1ClientCommand(Sender: TObject; Client: TFtpCtrlSocket; var Keyword, Params, Answer: TFtpString); procedure bsSkinSpeedButton1Click(Sender: TObject); procedure CheckBox1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var FTPServerForm: TFTPServerForm;implementation{$R *.dfm}procedure Logit(sTXT : String);begintryFTPServerForm.Memo1.Lines.Insert(0,DateTimeToStr(Now) + ' - ' + stxt);exceptFTPServerForm.Memo1.Lines.Clear;FTPServerForm.Memo1.Lines.Insert(0,DateTimeToStr(Now) + ' - ' + stxt);end;end;procedure TFTPServerForm.FtpServer1Authenticate(Sender: TObject; Client: TFtpCtrlSocket; UserName, Password: TFtpString; var Authenticated: Boolean);begin logit(client.username); if Checkbox1.Checked then begin Authenticated := True; Client.HomeDir := FilenameEdit1.text; Exit; end; if (UserEdit.Text=UserName) and (PassEdit.Text=Password) then begin Authenticated := True; Client.HomeDir := FilenameEdit1.text; end else Authenticated := False;end;procedure TFTPServerForm.Checkbox1Click(Sender: TObject);begin if Checkbox1.Checked then begin UserEdit.Enabled :=False; PassEdit.Enabled :=False; end else begin UserEdit.Enabled :=True; PassEdit.Enabled :=True; end;end;procedure TFTPServerForm.StartButtonClick(Sender: TObject);beginif FilenameEdit1.Text<>'' thenbegin if DirectoryExists(FilenameEdit1.Text) then begin try FtpServer1.Stop; FtpServer1.Port := PortEdit.Text; FtpServer1.Banner :='220 '+BEdit.Text; FtpServer1.Start; except MessageBox(0,Pchar('打开FTP服务出错!端口冲突!'),Pchar('警告'),MB_OK+MB_ICONINFORMATION); end; end else begin MessageBox(0,Pchar('FTP主目录不存在!请重新选择!'),Pchar('警告'),MB_OK+MB_ICONINFORMATION); end;end elseMessageBox(0,Pchar('FTP主目录不存在!请重新选择!'),Pchar('警告'),MB_OK+MB_ICONINFORMATION);end;procedure TFTPServerForm.FtpServer1ChangeDirectory(Sender: TObject; Client: TFtpCtrlSocket; Directory: TFtpString; var Allowed: Boolean);begin logit('改变目录 '+Client.Directory); if length(Client.Directory) < length(client.HomeDir) then begin Allowed := FALSE; Exit; end; Allowed := TRUE;end;procedure TFTPServerForm.FtpServer1Start(Sender: TObject);beginStartButton.Enabled :=False;StopButton.Enabled :=True;Logit('FTP 开始');end;procedure TFTPServerForm.FtpServer1Stop(Sender: TObject);beginStartButton.Enabled :=True;StopButton.Enabled :=False;Logit('FTP 停止');end;procedure TFTPServerForm.StopButtonClick(Sender: TObject);begintry FtpServer1.Stop;exceptend;end;procedure TFTPServerForm.FtpServer1ClientConnect(Sender: TObject; Client: TFtpCtrlSocket; AError: Word);beginLogit(client.UserName + ' - ' + client.DataSocket.Addr + ' 已经连接');end;procedure TFTPServerForm.FtpServer1ClientDisconnect(Sender: TObject; Client: TFtpCtrlSocket; AError: Word);beginLogit(client.UserName + ' - ' + client.DataSocket.Addr + ' 断开连接');end;procedure TFTPServerForm.FtpServer1ClientCommand(Sender: TObject; Client: TFtpCtrlSocket; var Keyword, Params, Answer: TFtpString);beginLogit(client.UserName + ' - ' + client.DataSocket.Addr + ' ' + Keyword + ' ' + client.directory + params);end;procedure TFTPServerForm.bsSkinSpeedButton1Click(Sender: TObject);var strCaption, strDirectory: string; wstrRoot: WideString;begin strCaption := 'FTP 主目录至...'; wstrRoot := ''; SelectDirectory(strCaption, wstrRoot, strDirectory); if Strdirectory <> '' then begin if copy(Strdirectory, Length(StrDirectory), 1) <> '\' then StrDirectory := StrDirectory + '\'; FilenameEdit1.Text :=StrDirectory; StartButtonClick(self); end;end;end. 到DEMO看看即可,使用MakeDir()函数即可. delphi7中如何求sqlserver2000中一个数据条件去除与另外一个交集的办法? 求助网络监听程序执行时总是提示“Access Violation at address……”??? 请问如何获取指定窗口的坐标 高分求解,该用什么算法? ativeform 控件 证书问题,如何不让浏览器阻止控件 在D2005下有没有QREPORT的啊? 请教! 在使用多文档MDI时,用第三方控件出错 Pascal 紧急求救!!! 如何在一个应用程序中调用另一个应用程序?? 有谁知道哪里有可以实现Excel绘图功能的控件? indy httpClient 在dll 中使用的问题 有关DELPHI学习问题
unit FTPServerUnit;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Mask, SkinBoxCtrls, SkinCtrls, DynamicSkinForm,
FileCtrl,
OverbyteIcsWndControl, OverbyteIcsFtpSrv, OverbyteIcsFtpSrvC,
OverbyteIcsWSocket, OverbyteIcsWinsock, bsSkinBoxCtrls, bsSkinCtrls,
BusinessSkinForm, bsSkinData;type
TFTPServerForm = class(TForm)
DSF: TspDynamicSkinForm;
FtpServer1: TFtpServer;
bsCompressedStoredSkin1: TbsCompressedStoredSkin;
bsSkinData1: TbsSkinData;
bsBusinessSkinForm1: TbsBusinessSkinForm;
bsSkinLabel1: TbsSkinLabel;
bsSkinLabel2: TbsSkinLabel;
bsSkinLabel3: TbsSkinLabel;
bsSkinLabel4: TbsSkinLabel;
bsSkinLabel5: TbsSkinLabel;
StartButton: TbsSkinButton;
StopButton: TbsSkinButton;
FilenameEdit1: TbsSkinEdit;
UserEdit: TbsSkinEdit;
BEdit: TbsSkinEdit;
PassEdit: TbsSkinPasswordEdit;
PortEdit: TbsSkinNumericEdit;
bsSkinSpeedButton1: TbsSkinSpeedButton;
bsSkinPanel1: TbsSkinPanel;
Memo1: TbsSkinMemo2;
bsSkinScrollBar1: TbsSkinScrollBar;
CheckBox1: TbsSkinCheckRadioBox;
procedure FtpServer1Authenticate(Sender: TObject;
Client: TFtpCtrlSocket; UserName, Password: TFtpString;
var Authenticated: Boolean);
procedure StartButtonClick(Sender: TObject);
procedure FtpServer1ChangeDirectory(Sender: TObject;
Client: TFtpCtrlSocket; Directory: TFtpString; var Allowed: Boolean);
procedure FtpServer1Start(Sender: TObject);
procedure FtpServer1Stop(Sender: TObject);
procedure StopButtonClick(Sender: TObject);
procedure FtpServer1ClientConnect(Sender: TObject;
Client: TFtpCtrlSocket; AError: Word);
procedure FtpServer1ClientDisconnect(Sender: TObject;
Client: TFtpCtrlSocket; AError: Word);
procedure FtpServer1ClientCommand(Sender: TObject;
Client: TFtpCtrlSocket; var Keyword, Params, Answer: TFtpString);
procedure bsSkinSpeedButton1Click(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
FTPServerForm: TFTPServerForm;implementation{$R *.dfm}procedure Logit(sTXT : String);
begin
try
FTPServerForm.Memo1.Lines.Insert(0,DateTimeToStr(Now) + ' - ' + stxt);
except
FTPServerForm.Memo1.Lines.Clear;
FTPServerForm.Memo1.Lines.Insert(0,DateTimeToStr(Now) + ' - ' + stxt);
end;
end;procedure TFTPServerForm.FtpServer1Authenticate(Sender: TObject;
Client: TFtpCtrlSocket; UserName, Password: TFtpString;
var Authenticated: Boolean);
begin
logit(client.username);
if Checkbox1.Checked then
begin
Authenticated := True;
Client.HomeDir := FilenameEdit1.text;
Exit;
end;
if (UserEdit.Text=UserName) and (PassEdit.Text=Password) then
begin
Authenticated := True;
Client.HomeDir := FilenameEdit1.text;
end else Authenticated := False;
end;procedure TFTPServerForm.Checkbox1Click(Sender: TObject);
begin
if Checkbox1.Checked then
begin
UserEdit.Enabled :=False;
PassEdit.Enabled :=False;
end else begin
UserEdit.Enabled :=True;
PassEdit.Enabled :=True;
end;
end;procedure TFTPServerForm.StartButtonClick(Sender: TObject);
begin
if FilenameEdit1.Text<>'' then
begin
if DirectoryExists(FilenameEdit1.Text) then
begin
try
FtpServer1.Stop;
FtpServer1.Port := PortEdit.Text;
FtpServer1.Banner :='220 '+BEdit.Text;
FtpServer1.Start;
except
MessageBox(0,Pchar('打开FTP服务出错!端口冲突!'),Pchar('警告'),MB_OK+MB_ICONINFORMATION);
end;
end else begin
MessageBox(0,Pchar('FTP主目录不存在!请重新选择!'),Pchar('警告'),MB_OK+MB_ICONINFORMATION);
end;
end else
MessageBox(0,Pchar('FTP主目录不存在!请重新选择!'),Pchar('警告'),MB_OK+MB_ICONINFORMATION);
end;procedure TFTPServerForm.FtpServer1ChangeDirectory(Sender: TObject;
Client: TFtpCtrlSocket; Directory: TFtpString; var Allowed: Boolean);
begin
logit('改变目录 '+Client.Directory);
if length(Client.Directory) < length(client.HomeDir) then
begin
Allowed := FALSE;
Exit;
end;
Allowed := TRUE;
end;procedure TFTPServerForm.FtpServer1Start(Sender: TObject);
begin
StartButton.Enabled :=False;
StopButton.Enabled :=True;
Logit('FTP 开始');
end;procedure TFTPServerForm.FtpServer1Stop(Sender: TObject);
begin
StartButton.Enabled :=True;
StopButton.Enabled :=False;
Logit('FTP 停止');
end;procedure TFTPServerForm.StopButtonClick(Sender: TObject);
begin
try
FtpServer1.Stop;
except
end;
end;procedure TFTPServerForm.FtpServer1ClientConnect(Sender: TObject;
Client: TFtpCtrlSocket; AError: Word);
begin
Logit(client.UserName + ' - ' + client.DataSocket.Addr + ' 已经连接');
end;procedure TFTPServerForm.FtpServer1ClientDisconnect(Sender: TObject;
Client: TFtpCtrlSocket; AError: Word);
begin
Logit(client.UserName + ' - ' + client.DataSocket.Addr + ' 断开连接');
end;procedure TFTPServerForm.FtpServer1ClientCommand(Sender: TObject;
Client: TFtpCtrlSocket; var Keyword, Params, Answer: TFtpString);
begin
Logit(client.UserName + ' - ' + client.DataSocket.Addr + ' ' + Keyword + ' ' + client.directory + params);
end;procedure TFTPServerForm.bsSkinSpeedButton1Click(Sender: TObject);
var
strCaption, strDirectory: string;
wstrRoot: WideString;
begin
strCaption := 'FTP 主目录至...';
wstrRoot := '';
SelectDirectory(strCaption, wstrRoot, strDirectory);
if Strdirectory <> '' then
begin
if copy(Strdirectory, Length(StrDirectory), 1) <> '\' then
StrDirectory := StrDirectory + '\';
FilenameEdit1.Text :=StrDirectory;
StartButtonClick(self);
end;
end;end.