Entwickler-Ecke

Internet / Netzwerk - Mit welcher Methode / Protokoll werden Downloads gestreamt?


Delete - Di 27.11.07 22:25
Titel: Mit welcher Methode / Protokoll werden Downloads gestreamt?
Aufgrund dieses Projektes Download-Manager: Anforderungen, Struktur und ? Komponenten [http://www.delphi-forum.de/topic_78524.html] arbeite ich mich durch das Indy-Tutorial von Delphi-Source [http://www.dsdt.info/tutorials/indy/?page=1] durch. Allerdings kann ich Unwissender damit bisher nur wenig anfangen.

Ich möchte gern wissen, über welche Protokolle ein Download im "normalen" Netz gestreamt wird. Sei es die Direkt-URL auf eine Dateiressource oder ein Button, der ein Download auslöst, oder wie auch immer. Ich kann mir nicht so richtig vorstellen, dass es immer ausschließlich über das FTP-Protokoll läuft.


GTA-Place - Di 27.11.07 22:44

Ebenso das HTT-Protokoll (HTTP).


Delete - Di 27.11.07 23:41

Danke.

Also der CodeSchnipsel aus dem Tutorial zu HTTP ist wirklich zu einfach. Direkt-URL's kann ich nun streamen.

Aber wie läuft das dann bei einem Download, wo ich auf einen Button klicken muss, um es zu starten. Ist es ein HTTP-Request, wenn ja, wie fange ich ihn ab? Sehr oft wird bei Mozilla ein neuer Tab geöffnet. Durch meine neuen PHP-Erfahrungen könnte ich mir vorstellen, dass ein Script aufgerufen wird, welches zuerst einen MIME-Typ und anschließend die Daten der Datei sendet. Tja, wie fange ich den Stream ab? Wenn ich recht habe *kratz*, dann sollte ich diesen Stream doch auch über die HTTP-Kompo von Indy empfangen können?


Delete - Fr 30.11.07 02:12

Hat wirklich keiner von Euch einen Ansatz? Glaub ich nicht! Ich erkläre es nochmal ausführlicher.

Nehmen wir die fiktive Seite "delphihosting.de". Dort könnt ihr meinetwegen Eure Codeschnipsel hochladen. Und ich will sie als Besucher herunterladen. Dazu klicke ich auf Euer Projekt, der Browser lädt eine HTML-Seite mit einer Schaltfläche "Download". Die schickt das Formular ab, welches dem Script sagt, welches Download vom Server gesendet werden soll.

Also gibt es keine URL auf eine Datei. Sondern irgendwie einen Stream. Und genau den möchte ich gern "einfangen" und herunterladen. Wie funktioniert das? Es wäre sehr nett, wenn mir bitte jemand sagen kann, welche Indy-Komponente dafür geeignet ist, wenn es nicht auch die IdHTTP sein sollte.

Danke

Christian


mkinzler - Fr 30.11.07 08:41

Es handelt sich hier um einen normalen Http-Stream.


Delete - Fr 30.11.07 17:39

Ich war wirklich schon kurz davor zu schreiben, "jetzt rückt doch endlich mal raus mit der Sprache". Aber als ich das Problem heute noch mal jemandem näher erläutert habe ging mir ein Licht auf.

Nehmen wir z. B. Chip-Online. Da ist der Button nur ein grafischer Link mit Refrenz auf die Datei, und einer via JavaScript implementierten Zeitverzögerung. Das gleiche bei div. anderen Seiten. Also muss ich nur die URL des Links nehmen. Und ich habe es nicht gemerkt.