Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Indy FTP Server - Dateiliste aus Stringlist (https://www.delphipraxis.net/110015-indy-ftp-server-dateiliste-aus-stringlist.html)

skyquaker 11. Mär 2008 17:21


Indy FTP Server - Dateiliste aus Stringlist
 
Kann man dem IndyFTP Server eine eigene Dateiliste zuspielen? Also das der Server dem Client statt einem Ordner Dateien anzeigt, die nicht existieren (nur als Einträge in einer StringList).

In der StringList steht beispielsweise:
Delphi-Quellcode:
datei1
datei2
Der User kriegt von seinem FTP Client angezeigt:
Delphi-Quellcode:
datei1
datei2

Datei1 und Datei2 gibt es nicht wirklich. (Sie sind keine reellen Dateien auf einem Datenträger)

Ich bin das ganze schon einmal selbst angegangen.

Die Dateiliste müsste doch hier gesendet werden:
Delphi-Quellcode:
procedure TForm1.FTPServerListDirectory(ASender: TIdFTPServerContext;
  const APath: string; ADirectoryListing: TIdFTPListOutput; const ACmd,
  ASwitches: string);
Wenn man jetzt TIdFTPListOutput die gewünschten Daten zuschieben könnte, dann müsste das ganze doch funktionieren, oder?

Ich bin dankbar für alle Hilfe die ich bekomme :thumb:

Klaus01 11. Mär 2008 17:27

Re: Indy FTP Server - Dateiliste aus Stringlist
 
Guten Abend,

die Liste ist das Resultat des FTP Befehls "list" (zu finden in der RFC unter Punkt 4.1.3).
Daran kannst Du so ohne weiteres nichts manipulieren.
Du könntest die List höchstens ändern bevor sie auf dem Client
angezeigt wird. Dazu mußt Du aber den Quelltext des Client ändern.

Wozu das gut sein soll, erschließt sich mir nicht so richtig.

Grüße
Klaus

skyquaker 11. Mär 2008 17:38

Re: Indy FTP Server - Dateiliste aus Stringlist
 
Zitat:

Zitat von Klaus01
Guten Abend,

die Liste ist das Resultat des FTP Befehls "list" (zu finden in der RFC unter Punkt 4.1.3).
Daran kannst Du so ohne weiteres nichts manipulieren.
Du könntest die List höchstens ändern bevor sie auf dem Client
angezeigt wird. Dazu mußt Du aber den Quelltext des Client ändern.

Wozu das gut sein soll, erschließt sich mir nicht so richtig.

Grüße
Klaus

Danke für die schnelle Antwort :thumb:

Das ganze soll nur clientseitig laufen, ich möchte das der Client per "localhost" auf diese Liste zugreifen kann.

Ich wollte überprüfen ob eine Datei abgefragt wird und dann auf eine andere Datei verlinken, dies ist aber scheinbar nicht möglich. (Wäre das denn überhaupt machbar, jetzt einmal abgesehen von dem Einspeisen der Liste. Ginge das vielleicht mit FTPServer.ONGetFile?).

Es sollte eine Art "Verschachtelung" für ein anderes Protokoll (oder eine Mischung aus anderen Protokollen) werden, auf die man via FTP zugreifen kann.

marabu 11. Mär 2008 17:55

Re: Indy FTP Server - Dateiliste aus Stringlist
 
Hallo,

Zitat:

Zitat von skyquaker
... Kann man dem IndyFTP Server eine eigene Dateiliste zuspielen? Also das der Server dem Client statt einem Ordner Dateien anzeigt, die nicht existieren (nur als Einträge in einer StringList). ...

klar doch - warum sollte das nicht gehen? Du selbst implementierst ja die Behandlung des LIST-Befehls.

Zitat:

Zitat von skyquaker
... Wenn man jetzt TIdFTPListOutput die gewünschten Daten zuschieben könnte, dann müsste das ganze doch funktionieren, oder? ...

Na klar, die Collection ist ja leer, wenn dein event handler die Kontrolle erhält. Wenn du da nichts reinschreibst, dann kommt beim Client auch nichts an. Was du da rein schreibst ist deine Sache, solange du ein erkennbares Format (Standard oder Custom) verwendest. Das Mapping der Dateinamen, wenn dann der Client die imaginäre Datei anfordert, musst du dann beim Ereignis OnRetrieveFile() vornehmen.

Klaus hat bestimmt übersehen, dass du den FTP Server ja selbst implementierst und nicht bei einem existierenden Server anfragst.

Freundliche Grüße

SirThornberry 11. Mär 2008 17:56

Re: Indy FTP Server - Dateiliste aus Stringlist
 
FTP ist nur ein Protokoll. Was du dort beim List-Kommando zurück gibst ist einzig und allein dir überlassen. Natürlich müssen die Dateien dabei auch nicht existieren.
Einfach eine Stringlist nehmen geht allerdings auch nicht weil du beim Listing angeben solltest ob es sich um Dateien handelt, wie groß diese Sind welche Attribute sie haben etc.

skyquaker 11. Mär 2008 18:43

Re: Indy FTP Server - Dateiliste aus Stringlist
 
Zitat:

Zitat von marabu
Hallo,

Zitat:

Zitat von skyquaker
... Kann man dem IndyFTP Server eine eigene Dateiliste zuspielen? Also das der Server dem Client statt einem Ordner Dateien anzeigt, die nicht existieren (nur als Einträge in einer StringList). ...

klar doch - warum sollte das nicht gehen? Du selbst implementierst ja die Behandlung des LIST-Befehls.

Zitat:

Zitat von skyquaker
... Wenn man jetzt TIdFTPListOutput die gewünschten Daten zuschieben könnte, dann müsste das ganze doch funktionieren, oder? ...

Na klar, die Collection ist ja leer, wenn dein event handler die Kontrolle erhält. Wenn du da nichts reinschreibst, dann kommt beim Client auch nichts an. Was du da rein schreibst ist deine Sache, solange du ein erkennbares Format (Standard oder Custom) verwendest. Das Mapping der Dateinamen, wenn dann der Client die imaginäre Datei anfordert, musst du dann beim Ereignis OnRetrieveFile() vornehmen.

Klaus hat bestimmt übersehen, dass du den FTP Server ja selbst implementierst und nicht bei einem existierenden Server anfragst.

Freundliche Grüße

Ich kenn mich leider mit dem FTP Protokoll nicht besonders gut aus. Ich muss jetzt also ADirectoryListing (TIdFTPListOutput) die Informationen in einem bestimmten Format übergeben, in welchem? Kann mir jemand vielleicht ein praktisches Beispiel liefern? Oder mich auf eines verweisen?

Bitte übt Geduld mit mir, ich kenne mich halt nicht so gut aus :oops:

marabu 11. Mär 2008 19:07

Re: Indy FTP Server - Dateiliste aus Stringlist
 
Du musst dir kein eigenes Format ausdenken, wenn dir das Standardformat genügt. Bei den Indy-Demos ist ein FTP-Server dabei, den solltest du dir mal anschauen. Du arbeitest eigentlich nur mit der Collection und ihren Items, das passende Format wird ohne dein Zutun vor der Übertragung hergestellt.

skyquaker 11. Mär 2008 21:17

Re: Indy FTP Server - Dateiliste aus Stringlist
 
Zitat:

Zitat von marabu
Du musst dir kein eigenes Format ausdenken, wenn dir das Standardformat genügt. Bei den Indy-Demos ist ein FTP-Server dabei, den solltest du dir mal anschauen. Du arbeitest eigentlich nur mit der Collection und ihren Items, das passende Format wird ohne dein Zutun vor der Übertragung hergestellt.

Delphi-Quellcode:
procedure TForm1.FTPServerListDirectory(ASender: TIdFTPServerContext;
  const APath: string; ADirectoryListing: TIdFTPListOutput; const ACmd,
  ASwitches: string);
 var st:TStrings;
     aq:TIdFTPListOutputItem;
begin
ShowMessage('TEST');
end;
Das erste Problem ist, dass TEST nicht angezeigt wird, was heißt das der Code nicht ausgeführt wird.

Das zweite Problem ist, dass ADirectoryListing scheinbar eine TCollection oder ein TCollectionItem benötigt um mit Daten befüllt zu werden.

Leider weiß ich absolut nicht was ich machen soll. :oops: :gruebel:

Wär echt gut wenn mir das jemand erklären könnte.

skyquaker 14. Mär 2008 19:03

Re: Indy FTP Server - Dateiliste aus Stringlist
 
Weiß niemand eine Antwort? Das kann doch nicht so kompliziert sein.

(sorry fürs gepusche, aber ich hänge hier fest :oops: )

marabu 15. Mär 2008 09:55

Re: Indy FTP Server - Dateiliste aus Stringlist
 
Moin,

hast du dir die Demo "FTPServer_Console" aus den Indy9Demos mal angeschaut?

Wie sieht denn dein nicht funktionierender Code aus?

Freundliche Grüße


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:41 Uhr.
Seite 1 von 2  1 2      

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