burghi'sphp-dummies.de
PHP für Einsteiger und Fortgeschrittenere - an laufenden Scripten erklärt
13.03.2010, 04:30 Uhr

Tutorials - Praxis - File Download - Grundproblem

Tutorials - Praxis
File Download: Grundproblem
Oftmals findet man im Netz Download-Klicks, die dann keine wirklich sind.
Was passiert? Der Browser entschliesst sich dazu, das JPEG, das PDF, die MP3 oder die Exel-Datei direkt anzuzeigen.
Wenn man das auf jeden Fall nicht will, macht man einen kleinen Umweg.
benutzte Bilder download.jpg
<html>
     <!-- So wäre es normal, so wird es der Browser vermutlich öffnen -->
     <a href="/bilder/download.jpg">Hier gehts zum Bild</a>
</html>
So, was also dagegen tun?
Hm man muss mit den Headern spielen, die an den Browser geschickt werden.
Dafür ändert man erstmal ab:
<html>
     <!-- Wie man sieht, hab ich ne php draus gemacht. -->
     <a href="/bilder/download.php">Hier gehts zum Download</a>
</html>
Und eben jene download.php kann nun so aussehen:
benutzte Bilder download.jpg
<?php
$downloadfile = "bilder/download.jpg";
$filename = "download.jpg";
$filesize = filesize($downloadfile);

header("Content-Type: image/jpeg");
header("Content-Disposition: attachment; filename='$filename'");
header("Content-Length: $filesize");

readfile($downloadfile);
exit;
?>
Nun wird die jpg-Datei zum Download angeboten.
Analog geht dies auch mit allen anderen Dateien, sogar mit html-Seiten.
Anmerkung: Im normalen Gebrauch wird kein leeres Popup wie hier aufgehen.
Das liegt nur am System von php-dummies.de


Wichtig ist das Content-Disposition: attachment; womit dem Browser gesagt wird: Dies ist ein Anhang, runterladen!
$filename ist der Name, den der Browser beim Speichern vorschlagen soll.
Überblick über verschiedene Content-Header gibts hier: http://de.selfhtml.org/diverses/mimetypen.htm
© 2004-2005 - Seite erstellt in 0,0680 sec