Hallo, lieber Forumbenutzer. Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen Möglichkeiten der Kommunikation ist das Forum ein wenig eingeschlafen und weniger Nutzer benutzen das Forum aktiv (trotzdem lohnt es sich evtl. hier nach Lösungen zu suchen oder seine Frage zu stellen).

Wir empfehlen, für deine Fragen/Probleme aktuell (zusätzlich) Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: http://redaxo.org/slack/
Benutzeravatar
joachim123
Beiträge: 73
Registriert: 5. Feb 2007, 21:41
Wohnort: München
Kontaktdaten: Website

Demo Download setzt falschen Header

8. Jun 2019, 19:14

hi all,

ich verwende das Download Modul aus der Demo für PDF Dateien (PHP 7.2):
<?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 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...

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
am Ende wird alles gut.

Benutzeravatar
joachim123
Beiträge: 73
Registriert: 5. Feb 2007, 21:41
Wohnort: München
Kontaktdaten: Website

Re: Demo Download setzt falschen Header

9. Jun 2019, 01:00

hi all,

Lösung gefunden, rex_response übernimmt...
rex_response::sendFile($file_path, 'application/pdf', $contentDisposition = 'attachment');
rex_response::sendCacheControl($cacheControl = 'must-revalidate, proxy-revalidate, private, no-cache, max-age=0');
rex_response::sendLastModified($lastModified = gmdate('D, d M Y H:i:s') . ' GMT');
Grüsse, Jo
am Ende wird alles gut.

Zurück zu „Templates/Navigationen [R5]“