用delphi写的ftp服务端,用资源管理器连上后,其他功能都正常了,在里面新建一个文件夹可以,一重命名就卡住,好像在等待什么,但是服务端已经重命名了,别的文件也是这样。
客户端就一直不动,不能上传,下载,进程显示未响应,但是服务那边已经重命名了
最后弹出
文件夹错误
重命名FTP服务器上的文件或文件夹时发生错误。请检查是否有权限进行此项修改。
详细信息:
the operation timed out服务端的权限设置和重命名的代码如下:procedure TForm1.IdFTPServer1ListDirectory(ASender: TIdFTPServerThread;
const APath: String; ADirectoryListing: TIdFTPListItems);
procedure
AddlistItem( aDirectoryListing: TIdFTPListItems; Filename: string; ItemType: TIdDirItemType; size: int64;date: tdatetime ) ;
var
listitem: TIdFTPListItem;
begin
listitem := aDirectoryListing.Add;
listitem.ItemType := ItemType;
listitem.FileName := AnsiToUtf8(Filename);
listitem.OwnerName := 'anonymous';
listitem.GroupName := 'all';
listitem.OwnerPermissions := '---'; //权限
listitem.GroupPermissions := '---';
listitem.UserPermissions := '---';
listitem.Size := size;
listitem.ModifiedDate := date;
end;
var
f: tsearchrec;
a: integer;
begin
ADirectoryListing.DirectoryName := AnsiToUtf8(APath);
a := FindFirst( TransLatePath( APath, ASender.HomeDir ) + '*.*', faAnyFile, f ) ;
while ( a = 0 ) do
begin
if ( f.Attr and faDirectory > 0 ) then
AddlistItem( ADirectoryListing, f.Name, ditDirectory, f.size, FileDateToDateTime( f.Time ) )
else
AddlistItem( ADirectoryListing, f.Name, ditFile, f.size, FileDateToDateTime( f.Time ) ) ;
a := FindNext( f ) ;
end;
FindClose( f ) ;
end;
/////////////////////////////////////////////
procedure TForm1.IdFTPServer1RenameFile(ASender: TIdFTPServerThread;
const ARenameFromFile, ARenameToFile: String);
begin
if not MoveFileEx( pchar(TransLatePath(ARenameFromFile,ASender.HomeDir)),
pchar(TransLatePath(ARenameToFile,ASender.HomeDir)),MOVEFILE_REPLACE_EXISTING ) then
//RaiseLastWin32Error;
end;请高手指点。
客户端就一直不动,不能上传,下载,进程显示未响应,但是服务那边已经重命名了
最后弹出
文件夹错误
重命名FTP服务器上的文件或文件夹时发生错误。请检查是否有权限进行此项修改。
详细信息:
the operation timed out服务端的权限设置和重命名的代码如下:procedure TForm1.IdFTPServer1ListDirectory(ASender: TIdFTPServerThread;
const APath: String; ADirectoryListing: TIdFTPListItems);
procedure
AddlistItem( aDirectoryListing: TIdFTPListItems; Filename: string; ItemType: TIdDirItemType; size: int64;date: tdatetime ) ;
var
listitem: TIdFTPListItem;
begin
listitem := aDirectoryListing.Add;
listitem.ItemType := ItemType;
listitem.FileName := AnsiToUtf8(Filename);
listitem.OwnerName := 'anonymous';
listitem.GroupName := 'all';
listitem.OwnerPermissions := '---'; //权限
listitem.GroupPermissions := '---';
listitem.UserPermissions := '---';
listitem.Size := size;
listitem.ModifiedDate := date;
end;
var
f: tsearchrec;
a: integer;
begin
ADirectoryListing.DirectoryName := AnsiToUtf8(APath);
a := FindFirst( TransLatePath( APath, ASender.HomeDir ) + '*.*', faAnyFile, f ) ;
while ( a = 0 ) do
begin
if ( f.Attr and faDirectory > 0 ) then
AddlistItem( ADirectoryListing, f.Name, ditDirectory, f.size, FileDateToDateTime( f.Time ) )
else
AddlistItem( ADirectoryListing, f.Name, ditFile, f.size, FileDateToDateTime( f.Time ) ) ;
a := FindNext( f ) ;
end;
FindClose( f ) ;
end;
/////////////////////////////////////////////
procedure TForm1.IdFTPServer1RenameFile(ASender: TIdFTPServerThread;
const ARenameFromFile, ARenameToFile: String);
begin
if not MoveFileEx( pchar(TransLatePath(ARenameFromFile,ASender.HomeDir)),
pchar(TransLatePath(ARenameToFile,ASender.HomeDir)),MOVEFILE_REPLACE_EXISTING ) then
//RaiseLastWin32Error;
end;请高手指点。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货