![]() |
Dateiname über HTTP auslesen
Hallo,
gibt es eine Möglichkeit über HTTP die Dateinamen und Verzeichnisse von einem Server zu lesen? Habe in den letzten Tagen Vieles (IP*Works-jpwHTTP, Indy-IdHTTP, WinINet, URLMon) ohne Erfolg probiert. Es ist (relativ) einfach, eine Datei herunterzuladen, wenn der Name bekannt ist. Ich soll aber die Dateien am Client mit denen vom Server sychronisieren. Die jetzt verwendete Methode mit einem Konfigfile, welches die aktuellen Verzeichnis- und Filenamen enthält, führt immer wieder zu Problemen wegen Tippfehlern. Daher möchte ich per HTTP die Namen lesen und das Konfigfile weglassen. Aber denkste, finde die File- und Verzeichnisnamen nicht. Bitte um Unterstützung! |
AW: Dateiname über HTTP auslesen
Per HTTP wirst du meines Erachtens nicht weiterkommen. Ich kenne keine Möglichkeit, dies per HTTP zu tun, außer "try and error". Wenn du das ganze über ftp machen würdest, gibt es Befehle wie "DIR" oder so. Wenn du PHP auf dem Server hast, kannst du dir dann auch per PHP ein Konfigfile automatisch erzeugen lassen, welches du dann auslesen kannst. Das sind so meine Ideen dazu.
|
AW: Dateiname über HTTP auslesen
Ob die Inhalte angezeigt werden, ist serverabhängig. In der Frühzeit des WWW haben viele Server den Inhalt eines Verzeichnisses angezeigt, wenn man den Pfad angab (
![]() ![]() Eine Alternative ist die Verwendung einer automatisch erzeugten Konfigfiles wie im vorigen Beitrag beschrieben, je nach Anforderungen zum Beispiel mit PHP (dynamisch), oder als statisches Konfigfile dass regelmäßig oder bei Änderungen der vorhandenen Dateien manuell angestoßen regeneriert wird. Eine von vielen HTTP Servern unterstützte (aber nicht immer auch aktivierte) Erweiterung des HTTP Protokolls namens WebDAV ermöglicht ebenfalls die Auflistung von Inhalten. Es hat den Vorteil ohne einen weiteren Port zu arbeiten. FTP ist nicht in allen Firewalls standardmäßig freigeschaltet. |
AW: Dateiname über HTTP auslesen
Danke erstmal für dfie Infos!
Habe mir inzwischen den Siteimport Assistent von Microsoft Expression Web angesehen. Dort wird im Prinzip das gemacht, was ich suche. Es werden die Dateien einer beliebigen HP - auch über HTTP - heruntergeladen. Aber ich habe keine Ahnung, wie die das machen. Weiß das vielleicht jemand? |
AW: Dateiname über HTTP auslesen
Man muss den Webserver dazu bringen, bestimmte Header auszugeben.
Code:
Content-Disposition sagt dem Browser er soll das Download-Fenster öffnen anstatt die Datei direkt anzuzeigen.
Content-Type: application/octet-stream
Content-Disposition: attachment; filename="Zieldateiname.ext" Man kann das z.B. mit PHP bewerkstelligen: ![]() Oder man benützt ein CGI-Script oder auch eine CGI-Anwendung (kann auch ![]() Mal angenommen du hast einen relativen HTML-Link auf ein PDF auf deiner Seite: /doku/info2013.pdf Wenn man diesen Link anklickt würde der Browser versuchen die PDF direkt anzuzeigen. Verwendet man dagegen das CGI /mein_downloader.cgi?resource=/doku/info2013.pdf dann erzeugt das CGI den Content-Disposition-Header und schickt anschliesend die Daten. Neben CGI gibt es auch noch andere Schnittstellen zum Webserver. PS: falscher Thread |
AW: Dateiname über HTTP auslesen
Zitat:
Versuch mal eine Datei auf den Server zu laden, die auf keiner Seite verlinkt ist. Diese wird nicht erkannt werden. |
AW: Dateiname über HTTP auslesen
Das wäre ein Einstieg, langt aber nur für einfache Seiten
Delphi-Quellcode:
implementation
uses WinInet,mshtml, WinTypes,JpegErrors; {$R *.dfm} procedure TForm5.Button1Click(Sender: TObject); begin Webbrowser1.Navigate('http://www.google.de'); end; Procedure GetWebBrowserHREFList(const AWebBrowser: TWebBrowser;List:TStrings) ; var nCount : Integer; elements : IHTMLElementCollection; element : IHTMLElement; sAnchor : String; begin if Assigned(AWebBrowser.Document) then begin elements:= (AWebBrowser.Document as IHTMLDocument2).all; for nCount := 0 To Pred(elements.Length) do begin element := elements.item(nCount, '') as IHTMLElement; if element.tagName = 'A' then begin sAnchor := (element as IHTMLAnchorElement).href; List.Add(sAnchor); end; end; end; end; procedure TForm5.WebBrowser1NavigateComplete2(ASender: TObject; const pDisp: IDispatch; var URL: OleVariant); begin GetWebBrowserHREFList(TWebBrowser(ASender),Listbox1.items) end; |
AW: Dateiname über HTTP auslesen
Zitat:
Willst du also alle Dateien, die in einer Homepage verlinkt ist, laden, dann sollte das so gehen, wie oben beschrieben. Wenn du aber unbekannte Dateien laden willst, wird das nicht funktionieren. An Hand von deinen Infos ist nicht genau zu erkennen, ob du eine Site analysieren und dann die entsprechenden Dateien downloaden willst, oder gezielt nur Dateien, die irgend jemand (der die Berechtigungen dazu hat) per FTP oder anders hochgeladen hast. Vielleicht kannst du das genauer erklären. |
AW: Dateiname über HTTP auslesen
Zitat:
Früher wurde die Auswertung von einer Person gemacht. Jetzt sollen sich mehrere Personen darum kümmern. Ab Q3/13 wird es eine "ordentliche" Lösung geben. Für den Übergang wollte ich mit möglichst wenig Aufwand eine Downloadmöglichkeit schaffen. Werde mir die Tipps noch ansehen, aber ohne FTP wird's wohl nichts werden. Danke jedenfalls für alle bisherigen Anregungen! Und vielleicht kommt die rettende Idee noch - müsste aber diese Woche sein. |
AW: Dateiname über HTTP auslesen
Zitat:
![]() Voraussetzung ist aber PHP. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:45 Uhr. |
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