Content-Disposition
Kanalpirat
- php
Hallo Forum,
ich gebe über PHP (download.php) eine Datei (test.pdf) aus einem geschützten Verzeichnis aus:
$datei['Endung'] = substr($datei['Name'], -3);
header('Content-Type: application/' . $datei['Endung']);
header('Content-Disposition: attachment; filename="' . $datei['Name'] . '"');
readfile('files/documents/' . $datei['Name']);
Das klappt auch gut. Allerdings wird durch die Angabe von attachment die Datei in jedem Fall zum Download angeboten, was ich nicht will. Es sollen die Voreinstellungen des Benutzers gelten (bei mir werden PDFs inline dargestellt). Lasse ich attachment aber weg, wird der Dateiname nicht mehr übermittelt, die Datei heißt dann download.pdf und nicht test.pdf, was ich natürlich noch weniger will.
Was mache ich falsch?
Danke für eure Hilfe!
Was mache ich falsch?
Z.b. das hier - das ist Unsinn.
header('Content-Type: application/' . $datei['Endung']);
Der MIME-Type hat nicht viel mit der Dateiendung zu tun.
application/pdf mag zwar zutreffen - aber das ist Zufall. Je nach PDF-Format sind z.B. auch application/x-pdf oder application/x-gzpdf zulässig.
Hello,
ich habe Dich so verstanden, dass Du die Ausgabe per Script vornimmst.
ich gebe über PHP (download.php) eine Datei (test.pdf) aus einem geschützten Verzeichnis aus:
$datei['Endung'] = substr($datei['Name'], -3);
header('Content-Type: application/' . $datei['Endung']);
header('Content-Disposition: attachment; filename="' . $datei['Name'] . '"');
readfile('files/documents/' . $datei['Name']);
>
> Das klappt auch gut. Allerdings wird durch die Angabe von attachment die Datei in jedem Fall zum Download angeboten, was ich nicht will. Es sollen die Voreinstellungen des Benutzers gelten (bei mir werden PDFs inline dargestellt). Lasse ich attachment aber weg, wird der Dateiname nicht mehr übermittelt, die Datei heißt dann download.pdf und nicht test.pdf, was ich natürlich noch weniger will.
Vielleicht hilft die die Doku etwas weiter.
Quickreference: <http://www.cs.tut.fi/~jkorpela/http.html> verweist auf -->
W3C-Doku: <http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.15>
Ich muss zugeben, dass ich das aus dem Stand jetzt auch nicht wieder zusammmen bekomme, aber ich hatte das Problem auch mal, als auf einem Apache auf Suse der generische Downloadhandler für PDFs des Apachen nicht funktionierte.
Da haben wir das aber mMn damals so gelöst, dass für jede anzubietene Datei ein eigener Download-Link angeboten wurde, der dann per Rewrite-Modus ins Script umgeleitet wurde. Dieses hat dann passend zum Link die Datei von ihrem Speicherplatz geholt und ausgeliefert.
Ich habe Dir das damalige Script mal auf den Server gelegt
<http://selfhtml.bitworks.de/snippets/downloads/get_pdf.php>
Es ist noch nicht weiter kommentiert, aber die Auskommentierungen geben ungefähr Aufschluss über die Gedanken, die wir uns damals mit Hilfe des Forums gemacht haben.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg

--
Nur selber lernen macht schlau
<http://bergpost.annerschbarrich.de>