Entwickler-Ecke

Internet / Netzwerk - FTP Dateien auf Server auflisten mit Ordner


Nano-Ware - Mi 11.08.10 18:42
Titel: FTP Dateien auf Server auflisten mit Ordner
Hey
wie soll das gehen, also einen kleinen Explorer für FTP. Wie geht das? Ich muss dazu sagen dass ich nichteinmal einen Explorer für das Betriebssystem schreiben ;D Also währe nett wenn ihr das für einen 13 jährigen erklären könntet ;D


elundril - Mi 11.08.10 18:46

Du könntest die TIdFTP-Komponente von den Indys verwenden. Dazu gibt in der Delphi-Praxis sicher ein paar Tutorials.

lg elundril


Nano-Ware - Mi 11.08.10 18:48

Ich hab da schon geschaut ... Aber leider nichts gefunden .. Ich hab nichtmal einen kleinen Ansatz


elundril - Mi 11.08.10 18:52

Dann solltest du vielleicht das Projekt verschieben bis du zumindest gelernt hast wie man Google benutzt! Das hier [http://www.delphi-treff.de/tutorials/netzwerk-und-internet/indy/ftp-tidftp] hab ich als ersten Treffer bekommen wenn ich das Schlagwort "TIdFTP" eingegeben habe.

lg elundril


Nano-Ware - Mi 11.08.10 19:02

Sorry ... Ich hab mir das jetzt angeschaut ich kann es leider erst morgen ausprobieren aber an einer stelle ist ja beschrieben wie man den Inhalt einer Verzeichnisses anzeigt

1. Werden da auch die enthaltenen Ordner angezeigt?
2. Wie unterscheide ich da Ordner und Dateien?

Vielen Dank schonmal und nochmal sorry ;D


elundril - Mi 11.08.10 19:05

nein enthaltene Ordner werden mit "Verzeichnisinhalt in Listbox" angezeigt.

Delphi-Quelltext
1:
IdFTP1.List(DirectoryListBox.Items);                    


Da du es gleich in die DirectoryListBox ausgeben lässt, siehst du ja was Verzeichnis ist und was nicht.

Lesen, denken, posten. Diese Reihenfolge wenn ich bitten darf.

lg elundril


Nano-Ware - Mi 11.08.10 19:13

Ich hab ein Problem ... Ich habe es genau so gemacht wie es auf der Seite beschrieben wird... Das "connecten" funktioniert, nur wenn ich die Items in der Directory Listbox auflisten will kommt der Fehler:

"Unable to service PORT commands"


MaPsTaR - Mi 11.08.10 23:07

Ich habe auch ein Problem...
Ich kann mit deinem letzten Post nichts anfangen.
Sollen wir jetzt raten, bis wir den Fehler gefunden haben?
Wie wäre es, wenn du mal den entsprechenden Code postest und uns eventuell mitteilst, welche Werte du in die Komponente eingetragen hast?


Nano-Ware - Mi 11.08.10 23:17

Das ist mein "Testcode"

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm4.Button1Click(Sender: TObject);
begin
  IdFTP1.Username := '*****';
  IdFTP1.Password := '*****';
  IdFTP1.Host     := '*****';
  IdFTP1.Connect;

  IdFTP1.List(DirectoryListBox1.Items);
end;


Moderiert von user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.


MaPsTaR - Mi 11.08.10 23:34

Ich kann den Fehler leider nicht reproduzieren.
Dein Code läuft so, wie er da steht...

Hast du irgendwas im Objektinspektor verändert?
Greifst du auch wirklich auf einen FTP-Server zu?


Nano-Ware - Mi 11.08.10 23:46

Ja das mache ich ... In FileZilla geht das mit den Angaben ...


MaPsTaR - Mi 11.08.10 23:51

Ändere mal im Objektinspektor den Wert "Passive" von IdFTP1 auf true.


Nano-Ware - Mi 11.08.10 23:57

Jetzt geht es danke, aber was hat das geändert? o.ö

jetzt gibt es doch noch ein kleines Problem ... in der Directory Listbox ist jetzt alles aufgelistet nur noch ein 0100 oder so davor und so komische Buchstaben... dann die Datei oder der Ordner wie kann ich damit erkennen ob es ein Ordner oder eine Datei ist?


Also das scheinen ja Informationen zu sei währe nett wenn du mir da noch helfen könntest


-rw-r--r-- 1 10011 10011 717 Jul 1 2009 bild.jpg

^- keine Ahnung-------------^ Größe --^ ^--Name


and der Rest? ;D


MaPsTaR - Do 12.08.10 00:10

http://de.wikipedia.org/wiki/File_Transfer_Protocol

Falls du die ausblenden willst...

Wäre vielleicht praktisch, wenn du dir die Parameter von den Prozeduren, die du verwendest ansiehst ;-)

Delphi-Quelltext
1:
  IdFTP1.List(DirectoryListBox1.Items, '', false);                    


An erster Stelle stehen die Zugriffsrechte
rw = Lesen und schreiben
r = nur lesen
und vor dem Dateinamen das Änderungsdatum.
Der Rest sagt mir jetzt auch nichts.


Nano-Ware - Do 12.08.10 00:18

Und was ist damit? drwxr-xr-x 2 10011 10011 4096 Dec 5 2009 Mail


Und nochwas... funktioniert das Passive FTP bei jedem Server zu 100% oder muss ich immer erst Activ versuchen und falls das nicht geht passiv verwenden?


Narses - Do 12.08.10 00:24

Moin!

user profile iconNano-Ware hat folgendes geschrieben Zum zitierten Posting springen:
Und was ist damit? drwxr-xr-x 2 10011 10011 4096 Dec 5 2009 Mail
AFAIR ist das (Detail-)List-Format bei FTP nicht definiert, das kann der Server machen, wie er lustig ist. Im Zweifel Standard-List und Detail-Liste holen und dann abgleichen. :idea:

user profile iconNano-Ware hat folgendes geschrieben Zum zitierten Posting springen:
Und nochwas... funktioniert das Passive FTP bei jedem Server zu 100% oder muss ich immer erst Activ versuchen und falls das nicht geht passiv verwenden?
Wie wäre es, wenn du dich informierst, was diese Option tut? Wenn du das verstanden hast, dann sollte auch klar sein, wann und warum das nötig ist... :les: :think: ;)

cu
Narses


MaPsTaR - Do 12.08.10 00:25

Das "d" an erster Stelle scheint für "directory" zu stehen, damit könntest du zwischen Verzeichnis und Datei unterscheiden...


Nano-Ware - Do 12.08.10 00:30

Vielen Dank erstmal... ich hab mir das von Wikipedia schon vorher ganz durchgelesen.. ich kanne mich leider mit dem FTP nich so aus so wie ich das verstanden hab erst Activ dann Passiv und nicht immer Passiv ist das richtig?


Narses - Do 12.08.10 00:33

Moin!

user profile iconNano-Ware hat folgendes geschrieben Zum zitierten Posting springen:
ich kanne mich leider mit dem FTP nich so aus
Das hat genau genommen ja auch nix mit FTP zu tun. :zwinker:

user profile iconNano-Ware hat folgendes geschrieben Zum zitierten Posting springen:
so wie ich das verstanden hab erst Activ dann Passiv und nicht immer Passiv ist das richtig?
Da dein Programm nicht wissen kann, in welcher Umgebung es arbeitet, würde ich sowas als User-Option für einen Server anbieten. :idea:

cu
Narses


Nano-Ware - Do 12.08.10 00:37

Useroption für den Server? ;D ssry ich versteh garnix^^


Narses - Do 12.08.10 00:40

Moin!

Nun, du überlässt es dem User für einen bestimmten Server anzugeben, ob der Client aktive oder passive Verbindungen verwenden soll. Was ist daran unklar? :gruebel:

cu
Narses


Nano-Ware - Do 12.08.10 00:44

Achso sry ;D Und wie macht das FileZilla? Soweit ich weiß gibt an da nichts dergleichen an ...


ALF - Do 12.08.10 01:40

user profile iconNano-Ware hat folgendes geschrieben Zum zitierten Posting springen:
Und was ist damit? drwxr-xr-x 2 10011 10011 4096 Dec 5 2009 Mail
drw wurde schon genannt.
Das x steht für execute, ausführbar oder öffnen von Verzeichnissen.
Die ersten drei rwx für den User, die nächsten 3 für die Gruppe, die letzten 3 für andere.
Das - steht dafür, das nichts gesetzt ist.
Die 100 ist der jeweilige User, 11 steht für die Gruppe(n).
4096 ist Belegung an Platz auf der Festplatte also 4Kb für den Eintrag des Verzeichniss.
Weitere Informationen beim Zugriff über FTP und die Anzeigen, lassen sich auch alle bei Google finden. :wink:. Passiv und Aktiv lassen sich dort auch finden.
Wenn man schon damit arbeiten will :wink:
Gruss Alf


Gerd Kayser - Do 12.08.10 02:49

user profile iconALF hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconNano-Ware hat folgendes geschrieben Zum zitierten Posting springen:
Und was ist damit? drwxr-xr-x 2 10011 10011 4096 Dec 5 2009 Mail
Die 100 ist der jeweilige User, 11 steht für die Gruppe(n).

10011 ist doppelt aufgeführt. Also steht das erste 10011 für die Usergruppe und das zweite 10011 für den User. In diesem Fall sind also der Gruppenname und der Username identisch (z. B. dbtest.dbtest).
Und die "2" vor der Usergruppe steht für den hard-link-count.
Als erstes Zeichen sind statt "d" (für Directory) und "-" (normale Datei) auch noch andere Einträge möglich (z. B. für blocked devices, Links usw.).
Siehe: http://en.wikipedia.org/wiki/Ls


ALF - Do 12.08.10 03:10

Hi, user profile iconGerd Kayser ,ein bischen wollte ich ihm ja auch noch selber rausfinden lassen :mrgreen:
Gruss Alf


Nano-Ware - Do 12.08.10 11:18

Leute vielen Dank das hab ich jetzt wirklich verstanden.. es tut mir sehr leid ich habe ja schließlich auch in Google gesucht nur hatte ich zB keine Ahnung, das Activ und Passiv hier eine bedeutung haben..

Nur eine Frage besteht noch ... Wie macht das FileZilla?


Dude566 - Do 12.08.10 13:02

Ist doch OpenSource. ;)


Nano-Ware - Do 12.08.10 14:00

Währ mir zu kompliziert ;D die arbeiten sicher net mit Indy ;D


ALF - Do 12.08.10 15:45

user profile iconNano-Ware hat folgendes geschrieben Zum zitierten Posting springen:
Nur eine Frage besteht noch ... Wie macht das FileZilla?
Bei FileZilla nennt sich diese Einstellung glaube ich, dauerhafte Verbindung herstellen = Akitv.

Gruss Alf


Nano-Ware - Fr 13.08.10 00:09

Sry aber was heißt das? ;D Dauerhafte Verbindung?

Thx schonmal ;D


Narses - Fr 13.08.10 00:15

Moin!

Ich rate jetzt mal: "dauerhafte Verbindung" soll wohl session-keep-alive sein, also sendet der Client in regelmäßigen Abständen (notfalls) ein (Dummy-)Paket, damit der Server die Verbindung nicht von sich aus beendet. :nixweiss:

Das hat IMHO nix mit passiven Transfers zu tun.

cu
Narses


jaenicke - Fr 13.08.10 00:56

user profile iconMaPsTaR hat folgendes geschrieben Zum zitierten Posting springen:
Das "d" an erster Stelle scheint für "directory" zu stehen, damit könntest du zwischen Verzeichnis und Datei unterscheiden...
Man könnte natürlich auch die einfache Variante nehmen und TIdFTP selber parsen lassen...

Dafür gibts die Eigenschaft DirectoryListing. Da nimmt das Indy schon auseinander.


ALF - Fr 13.08.10 10:49

Ok, user profile iconNano-Ware damit Du nicht weiter Raten musst [http://de.wikipedia.org/wiki/File_Transfer_Protocol]

user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Moin!
Ich rate jetzt mal: "dauerhafte Verbindung" soll wohl session-keep-alive sein, ...
Jo, hab ich verwechselt :mrgreen:

Gruss Alf