Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi IdFTPServer - Kleine Probleme mit Uploads und Ordnern. (https://www.delphipraxis.net/168947-idftpserver-kleine-probleme-mit-uploads-und-ordnern.html)

Mohadrim 20. Jun 2012 08:38

IdFTPServer - Kleine Probleme mit Uploads und Ordnern.
 
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*

NickelM 20. Jun 2012 11:51

AW: IdFTPServer - Kleine Probleme mit Uploads und Ordnern.
 
Zu Punkt 3. :
Versuch es mal mit
Delphi-Quellcode:
ExtractFileDir
.
Wenn die Datei eine Endung hat funkt es. Weis aber nicht ob es geht wenn sie keine hat. Man müsste dan vielleicht die Funktion
Delphi-Quellcode:
ExtractFileDir
umbauen, für deine Zwecke.

Gruß NickelM

Mohadrim 21. Jun 2012 07:47

AW: IdFTPServer - Kleine Probleme mit Uploads und Ordnern.
 
Danke das geht nun auch. Bleiben nur noch 1. und 2. offen. Beim übertragen meckert er zudem, dass bei MDTM keine Rückmeldung erfolgt. :(


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz