Header add Content-Disposition "attachment" verursacht Internal Server error
Als der eingebaute browser von meinem ebook-reader (Sony PRS-T1) ist ziemlich dumm und will öffnen .epub-Dateien als text-Dateien, statt Sie herunterzuladen, habe ich versucht, zwingen Sie den browser herunterladen .epub-Dateien mit diesem .htaccess-Datei:
<FilesMatch "\.(?i:epub)$">
ForceType application/octet-stream
Header add Content-Disposition "attachment"
</FilesMatch>
Jedoch, führt dies zu einem internal server error:
Internal Server Error
Der server hat einen internen Fehler oder eine Fehlkonfiguration und war
Ihre Anforderung nicht ausführen.Bitte Kontaktieren Sie den server-administrator, webmaster@localhost und
informieren Sie über die Zeit der Fehler aufgetreten ist, und alles, was Sie
getan haben kann den Fehler verursacht hat.Mehr Informationen über diesen Fehler kann in der server-Fehler
log.
Wenn ich raus lassen Header add Content-Disposition "attachment"
es ist kein Fehler - aber der browser würde die Datei nicht herunterladen 🙁
Mache ich etwas falsch? Wo kommt der Internal Server error kommen?
[BEARBEITEN 2013-04-11]
Ich nur verdient der "beliebten" Frage-Button" für diesen thread, hat mich an Sie, einige Informationen.
Habe ich es endlich geschafft zu zwingen, ein download auf der Sony-PRS-T1-browser mit der folgenden php-Funktion
function startDownload($path, $mimeType) {
if(!file_exists($path)) {
//File doesn't exist, output error
exit('file not found');
} else {
$size = filesize($path);
$file = basename($path);
//Set headers
header("Pragma: public"); //required
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false); //required for certain browsers
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=\"$file\"");
header("Content-Type: $mimeType");
header("Content-Transfer-Encoding: binary");
header("Content-Length: $size");
//Read the file from disk
readfile($path);
}
exit();
}
Hoffe, dass hilft jemandem eines Tages.
- Dein log sagt...?
- sorry, nicht meine server - vielleicht kann ich bitten, für das Protokoll, aber nicht wirklich wissen.
- möglich, Duplikat der Set Content-Disposition-header, um die Bindung nur auf Dateien in einem bestimmten Verzeichnis?
- Ich habe einen Sony PRS-T3 und es hat mir geholfen, danke! In meinen Tests braucht man nur den richtigen MIME-Typ für Sie heruntergeladen werden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte dies die Antwort sein:
http://diogomelo.net/node/24
httpd.conf
und kommentieren Sie diese Zeile:LoadModule headers_module modules/mod_headers.so
durch entfernen der#
Charakter. Dann starten Sie Ihren apache-server.Können Sie auch wollen, um sicherzustellen, dass der headers-Modul aktiviert ist, bevor Sie diese in Ihre htaccess-Datei. Die folgende Zeile wird einen Fehler erzeugen, wenn die Header-Modul ist nicht aktiviert:
hier ist ein Beispiel, dass die Kräfte der download von mp3-Dateien nur, wenn die Header-Modul aktiviert ist:
Hinweis: es nicht aktivieren das Modul, es ignoriert alles, was in den IfModule-tags, wenn das Modul nicht aktiviert ist.
Aktivieren, apache-Module müssen Sie Bearbeiten Sie Ihre httpd.conf-Datei oder in wamp-server können Sie auf die wamp-Symbol in der Taskleiste und wählen Sie "Apache" - > Apache-Module -> headers_module" oder stellen Sie sicher, es markiert ist.
für ubuntu, es ist ein shortcut zu aktivieren, apache2-Header-Modul, mit:
Problem gelöst ^_^