Download-seite erstellen

Dr. Wuah

Lt. Commander
Registriert
Mai 2005
Beiträge
1.277
Hey

Ich hab mal eine Frage. Und zwar bin ich der absolute einsteiger was html oder ähnliches angeht....
Ich wüsste aber gerne, wie man eine Internetseite erstellt auf der man eine Datei herunterladen kann. Das bedeutet also, das ich erstmal gar nichts auf der eigentlich seite brauch, sondern wenn man den link im Browser eingibt gleich das Downloadfenster von Firefox oder IE kommt...

wär super wenn mir jemand erklären könnte, wie man das macht!

::H1tm4n::
 
Das hat nichts mit HTML zu tun, sondern mit der Konfiguration des Servers und wie der Browser auf die Antwort des Servers reagiert.

Ich hol mal ein bisschen weiter aus...:
HTTP funktioniert nach dem challenge-response-Verfahren, d.h. der Browser sendet eine Anfrage an den Server und dieser antwortet ihm, wobei die Antwort aus zwei Teilen besteht, nämlich einem Head und einem Body.
Der Body enthält das, was man als Ergebnis im Browser sieht, also bspw. die/das angeforderte HTML-Seite/Bild/was-auch-immer.
Der Head enthält die Meta-Daten zum Body, neben dem Status der Antwort (z.B. 200 OK oder 404 Not Found) zählt u.a. auch der sog. Content-Type dazu, der den Typ des Bodys angibt (bspw. image/jpeg für JPEG-Bildchen, text/html für HTML-Dokumente etc.):

Code:
HTTP/1.x 200 OK
Content-Type: text/html; charset=ISO-8859-15

Entscheidend für dein Vorhaben ist, wie der Browser auf eben diesen Content-Type reagiert, bei text/html, image/jpeg und zahlreichen anderen Typen öffnet der Browser den Body - sprich er zeigt ihn an, bei application/octet-stream hingegen bietet er den Body i.d.R. zum Download an. Du bist also in gewissen Grenzen auf die Einstellung des Browsers angewiesen, wenn du möchtest, daß er ihn zum Download anbieten und nicht automatisch anzeigen soll.
Zahlreiche Browser (eigentlich alle aktuellen) verstehen aber zusätzlich noch einen Header, der aus der Welt der Emails statt, nämlich Content-Disposition. Mit diesem Header kannst du beeinflussen, ob die Datei zum Download angeboten (inline) oder angezeigt werden soll attachment:

Download erzwingen, obwohl es ein JPEG-Bildchen ist
Code:
HTTP/1.x 200 OK
Content-Type: image/jpeg
Content-Disposition: attachment

Zusätzlich läßt sich mit filename der Dateiname vorgeben, falls er vom Dateinamen im URL abweicht bzw. abweichen soll:
Code:
HTTP/1.x 200 OK
Content-Type: image/jpeg
Content-Disposition: attachment;filename=anton.jpg


Wenn du also Dateien anbieten willst, die üblicherweise vom Browser (oder Plugins) geöffnet werden, muß du mit Hilfe eines Programms den Header beeinflussen, dazu reichen aber einige Zeilen Perl/PHP/Python oder was immer auf dem Server als Programmiersprache installiert ist. Sollen hingegen nur Dateien angeboten, die i.d.R. vom Browser nicht geöffnet werden (können), kannst du die Dateien as-is zum Download bereit stellen (vorausgesetzt der Server ist nicht falsch konfiguriert...)

greetings, Keita
 
ok vielen Dank erstaml! Hab das jetzt soweit verstanden.

Doch wie genau zeig ich dem Browser jetzt das ers downloaden soll? Ich mein ich muss ja den Befehl irgendwohin schreiben...

Mein hoster ist pytal, da ist eigentlich ftp php und alles aktiviert...drum vielleicht noch eine kurze erklärung wie ich das jetzt hinschreiben soll, das die datei auch gedownloadet wird....:)

::H1tm4n::
 
Hi,
PHP:
 <?php
 // We'll be outputting a PDF
 header('Content-type: application/pdf');

  // It will be called downloaded.pdf
  header('Content-Disposition: attachment; filename="downloaded.pdf"');

  // The PDF source is in original.pdf
  readfile('original.pdf');
?>
Quelle: http://de3.php.net/manual/en/function.header.php

Mehr brauchts auch nicht.

Grüße
 
Zuletzt bearbeitet:
das ist doch total übertrieben, er brauch doch nur einen ganz normalen link, also ich würde es so machen:

HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Download</title>
</head>

<body>
Bitte rechte Maustaste -> speichern untet<br />
<br />
<a href="meine_datei.xxx">Meine Downloaddatei</a><br />
<br />

</body>
</html>
 
Danke für eure Antworten! habs jetzt mal wie von mtn beschriebn gemacht..un das klappt super! Werds aber denk ich auch nochmal machen wies hemorieder beschrieben hat in den nächsten danken

bis dahin danke nochmal ciao
 
Zurück
Oben