Ich verwende die
Indy Komponenten (Version welche bei Delphi7 Enterprise) mitgeliefert werden, für das downloaden von Dateien von einem
FTP Server. Bisher waren das alles
ftp server, welche Benutzernamen und Passwort erfordert haben.
Ich verwende dazu folgenden Code:
Delphi-Quellcode:
function FTP_RetrieveFileList(var aList: TStringList; aIP: string; aPort: integer;
aUsername, aPassword, aDirectory: string; aPassive: boolean; aMask: string = ''): integer;
var
lTempList: TStringList;
i: integer;
lFTP: TIdFTP;
begin
Result := CFTP_OK;
if (aList = nil) then
exit;
aList.Clear;
lFTP := TIdFTP.Create(nil);
try
lFTP.Host := aIP;
lFTP.Port := aPort;
lFTP.Username := aUsername;
lFTP.Password := aPassword;
lFTP.Passive := aPassive;
try
if (aUsername ='') then
lFTP.Connect(false)
else
lFTP.Connect(true);
except
Result := CFTP_ERROR_CONNECT;
end;
if (lFTP.Connected) then
begin
try
lFTP.ChangeDir(aDirectory);
except
Result := CFTP_ERROR_DIRECTORYNOTEXIST;
end;
lTempList := TStringList.Create;
try
lFTP.List(lTempList);
for i := 0 to lFTP.DirectoryListing.Count - 1 do
if (lFTP.DirectoryListing.Items[i].ItemType = ditFile) then
aList.Add(lFTP.DirectoryListing.Items[i].FileName);
finally
lTempList.Free;
end;
try
lFTP.Disconnect;
except
Result := CFTP_ERROR_DISCONNECT;
end;
end;
finally
lFTP.Free;
end;
Wenn der Zugriff anonym sein soll, so solle man als Passwort die eigene Email eintragen. Das habe ich auch gemacht. Somit hat das Login scheinbar funktioniert. Wenn ich jetzt jedoch in das Verzeichnis wechseln soll, in welchem die gewünschten Dateien liege bekomme ich eine Fehlermeldung, dass ich nicht verbunden wäre.
Die
ftp Server addresse ist beispielsweise so aufgebaut
ftp://einftpserver.at/verzeichnis. Deswegen verbindet sich die
ftp Komponente erstmal mit einftpserver.at und versucht danach ins Verzeichnis "verzeichnis" zu wechseln.
Gibt es beim anonymous Zugriffsmode noch etwas zu beachten, was ich übersehen habe?