Einzelnen Beitrag anzeigen

Mohadrim

Registriert seit: 4. Jun 2004
8 Beiträge
 
#1

IdFTPServer - Kleine Probleme mit Uploads und Ordnern.

  Alt 20. Jun 2012, 08:38
Hallo,

mein Problem ist, denke ich mal nur ein kleines. Der IdFTPServer funktioniert soweit Problemlos bis auf folgende Fehler:

1. Per FTP Clienten kann man maximal zwei Dateien gleichzeitig hochladen bei 30Dateien kein Problem. Werden jedoch 4 gleichzeitig im FTP Client eingestellt bringt jede 7-8 Datei ein Upload Fehler. Der Fehler zeigt, dass der Server nicht erreichbar sei.

Delphi-Quellcode:
procedure TForm1.IdFTPServer1StoreFile(ASender: TIdFTPServerContext;
  const AFileName: string; AAppend: Boolean; var VStream: TStream);
begin
  if not Aappend then
   VStream := TFileStream.Create(ReplaceChars(AppDir+AFilename),fmCreate)
  else
   VStream := TFileStream.Create(ReplaceChars(AppDir+AFilename),fmOpenWrite)
end;

2. Unter FileZilla (Linux/Windows) sowie PHP FTP kann man auf dem Server neue Verzeichnisse erstellen. Dabei wird nachfolgende Funktion aufgerufen. Bei cuteFTP hingegen kann der Ordner nicht erstellt werden obwohl es keine Fehlermeldung gibt sondern ein "Ordner wurde erstellt". Auch wird die Funktion des idFTPServers gar nicht erst aufgerufen hab dort ein ShowMessage als Kontrolle eingebaut gehabt. Die Einstellungen sind jedoch wie FileZilla gesetzt. Mein Bedenken nun, dass auch andere FTP Clienten nicht gehen, wenn ich den FTP Server bereitstelle. Gibt es in IdFTPServer noch eine andere Möglichkeit, einen ordner zu erstellen?

Delphi-Quellcode:
procedure TForm1.IdFTPServer1MakeDirectory(ASender: TIdFTPServerContext;
  var VDirectory: string);
begin
  if not DirectoryExists(ReplaceChars(AppDir + VDirectory)) then
  if not CreateDir(ReplaceChars(AppDir + VDirectory)) then
  begin
    Raise Exception.Create('Unable to create directory');
  end;
end;

3. So dritter und letzter Fehler. Dateien hochladen geht ja problemlos, sei es nun mal mit den maximal 2Dateien gleichzeitig außer acht gelassen. Nur das Problem sind die Verzeichnisse. Lade ich nun einen Ordner mit Dateien darin hoch geht es nicht, da er kein Ordner erstellt egal ob Filezilla (Linux/Windows) etc. Er will also alle Dateien hochladen ohne vorher zu prüfen ob nicht erst ein Ordner angelegt werden muss. Meine Idee nun, dass ich bei IdFTPServer1StoreFile die Variable AFilename zerlege und den Dateinamen am Ende lösch und den Pfad als AFoldername speicher und dann überprüf, ob der Ordner vorhanden ist, wenn nicht dann erstellen. Nur wie kann ich den String zerlegen so dass ich nur den Pfad ohne Datei bekomm?

C:\ftpverzeichnis\subfolder\datei1.test
C:\ftpverzeichnis\subfolder\datei2

Also die Dateien haben auch mal keine Endung.


Wäre echt super, wenn mir jemand bei 2. und 3. eine Lösung nennen könnte und perfekt, wenn auch 1. irgendwie zu lösen wäre. *G*
  Mit Zitat antworten Zitat