ich verwende das Download Modul aus der Demo für PDF Dateien (PHP 7.2):
Bin grade darauf gestossen, dass zuweilen der Download nicht funktioniert. Grund: es wird _immer_ der text/html Content-Type gesetzt und manche Browser zeigen dann kryptische Zeichen an. Das Script funktioniert ansonsten fehlerfrei, der Expire Header wird z.B auch korrekt gesetzt. Es wird also auch kein Header-already-send oder sowas angezeigt...<?php
$file_name = strtolower(preg_replace("/[^a-zA-Z0-9.\-\$\+]/","_",rex_request('file', 'string')));
$file_type = "application/octetstream";
$file_path = rex_path::media($file_name);
if ($file_name != "" && $fp = @fopen("$file_path", "r")) {
header("Expires: Mon, 01 Jan 2000 01:01:01 GMT"); // Date in the past
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // always modified
header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1
header("Cache-Control: post-check=0, pre-check=0", false);
header("Cache-Control: private");
header("Pragma: no-cache");
header("Content-Type: $file_type; name=\"$file_name\"");
header("Content-Disposition: attachment; filename=\"$file_name\"");
fpassthru ($fp);
fclose($fp);
} else {
echo "<div class=warning>Download fehlgeschlagen</div>";
}
?>
Bin nun etwas ratlos und bräuchte einen Tipp: warum lässt sich der Content-Type Header selbst hardgecoded nicht setzen?
Merci & Grüsse, Joachim