|
Liefert die Größe einer Datei
Sendet einen HTTP-
Gibt eine Datei aus |
Tutorials - Praxis - File Download - GrundproblemTutorials - PraxisFile 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.
<html> <!-- So wäre es normal, so wird es der Browser vermutlich öffnen --> <a href="/bilder/download.jpg">Hier gehts zum Bild</a> </html> 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>
<?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; ?> 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 |