Bei dieser Procedure kann ich das Verzeichnis mit DirectoryOpus lesen
Code:
procedure TForm1.FTPServerListDirectory(ASender: TIdFTPServerThread;
const APath: String; ADirectoryListing: TIdFTPListItems);
var LItem: TidFTPListItem;
tmp1: TSearchRec;
LFileAttribute: Integer;
LPfad: String;
begin
LPfad := 'D:\';
LFileAttribute := FILE_ATTRIBUTE_DIRECTORY + FILE_ATTRIBUTE_HIDDEN + FILE_ATTRIBUTE_SYSTEM;
if FindFirst(LPfad + '*', LFileAttribute, tmp1) = 0 then
begin
repeat
if (tmp1.Name <> '.') and (tmp1.Name <> '..') then
begin
LItem := ADirectoryListing.Add;
LItem.FileName := tmp1.Name;
LItem.Size := tmp1.Size;
LItem.OwnerName := 'Username';
LItem.GroupName := 'Groupname';
LItem.OwnerPermissions := 'rwx';
LItem.GroupPermissions := 'rwx';
LItem.UserPermissions := 'rwx';
if DirectoryExists(LPfad + tmp1.Name) then
LItem.ItemType := ditDirectory
else
LItem.ItemType := idftplist.ditFile;
end;
until FindNext(tmp1) <> 0;
end;
FindClose(tmp1);
end;
Bei dieser Procedure kann nur der InternetExplorer die Verzeichnise lesen
Code:
procedure AddlistItem( aDirectoryListing: TIdFTPListItems; Filename: string; ItemType: TIdDirItemType; size: int64; date: tdatetime ) ;
var
listitem: TIdFTPListItem;
begin
listitem := aDirectoryListing.Add;
listitem.ItemType := ItemType;
listitem.FileName := Filename;
listitem.OwnerName := 'anonymous';
listitem.GroupName := 'all';
listitem.OwnerPermissions := '---';
listitem.GroupPermissions := '---';
listitem.UserPermissions := '---';
listitem.Size := size;
listitem.ModifiedDate := date;
end;
procedure TForm1.FTPServerListDirectory(ASender: TIdFTPServerThread;
const APath: String; ADirectoryListing: TIdFTPListItems);
var
f: tsearchrec;
a: integer;
begin
ADirectoryListing.DirectoryName := 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;
Was muss bei der 2ten Procedur geändert werden damit es die Wirkung von der Ersten hat?