Einzelnen Beitrag anzeigen

Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#1

Verzeichniswechsel bei anonymem FTP Server

  Alt 2. Jun 2008, 12:55
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?
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat