AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Dateiname über HTTP auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

Dateiname über HTTP auslesen

Ein Thema von HiWieGehts · begonnen am 1. Apr 2013 · letzter Beitrag vom 2. Apr 2013
Antwort Antwort
HiWieGehts

Registriert seit: 19. Aug 2005
101 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: Dateiname über HTTP auslesen

  Alt 1. Apr 2013, 21:26
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?
LG, HiWieGehts
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#2

AW: Dateiname über HTTP auslesen

  Alt 1. Apr 2013, 22:44
Man muss den Webserver dazu bringen, bestimmte Header auszugeben.
Code:
Content-Type: application/octet-stream
Content-Disposition: attachment; filename="Zieldateiname.ext"
Content-Disposition sagt dem Browser er soll das Download-Fenster öffnen anstatt die Datei direkt anzuzeigen.

Man kann das z.B. mit PHP bewerkstelligen: http://www.php-faq.de/q-datei-download.html
Oder man benützt ein CGI-Script oder auch eine CGI-Anwendung (kann auch in Delphi programmiert werden).

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

Geändert von sx2008 ( 2. Apr 2013 um 00:48 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Dateiname über HTTP auslesen

  Alt 1. Apr 2013, 23:14
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?
Die Default-Seite wird geladen und alle lokalen Links werden bestimmt und geladen. Html-Seiten werden weiter auf Links.

Versuch mal eine Datei auf den Server zu laden, die auf keiner Seite verlinkt ist. Diese wird nicht erkannt werden.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#4

AW: Dateiname über HTTP auslesen

  Alt 1. Apr 2013, 23:23
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 = 'Athen 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;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.651 Beiträge
 
Delphi 12 Athens
 
#5

AW: Dateiname über HTTP auslesen

  Alt 2. Apr 2013, 17:24
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?
Du mußt die Dateinamen kennen, ansonsten kannst du diese nicht laden. Es gibt kein "DIR" Kommando für HTTP.

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.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
HiWieGehts

Registriert seit: 19. Aug 2005
101 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Dateiname über HTTP auslesen

  Alt 2. Apr 2013, 18:37
Zitat:
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.
Es geht um das Auswerten von Log-Daten div. Maschinen. Der Dateiname wird von der Maschine generiert und ist ein Zufallswert.
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.
LG, HiWieGehts
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.651 Beiträge
 
Delphi 12 Athens
 
#7

AW: Dateiname über HTTP auslesen

  Alt 2. Apr 2013, 19:05
Der Dateiname wird von der Maschine generiert und ist ein Zufallswert.
Wenn das alles Zufallswerte sind, dann entweder per FTP oder du hast PHP auf dem Server installiert und kannst das Kommando "DIR" aufrufen. Diese Funktion könnte eine Datei auf dem Server ablegen mit dem Inhalt des Directories. Den Dateinamen legst du fest und dann lädst du als erstes diese Datei. Darin stehen dann die anderen Dateien, die du dann einzeln downloaden kannst.
Voraussetzung ist aber PHP.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:22 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