Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann ich Dateidownloads mithilfe von PHP-Headern zuverlässig erzwingen?

Wie kann ich Dateidownloads mithilfe von PHP-Headern zuverlässig erzwingen?

Mary-Kate Olsen
Freigeben: 2024-12-05 12:38:10
Original
687 Leute haben es durchsucht

How to reliably force file downloads using PHP headers?

Datei-Download mit Header() in PHP erzwingen

Beim Versuch, Benutzern das Herunterladen von Dateien von einem Server zu ermöglichen, funktionieren gängige Lösungen wie die folgende möglicherweise nicht:

header('Content-Description: File Transfer');
header('Content-Type: image/png');
header('Content-Disposition: attachment; filename="Image.png"');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . $size);
readfile("Image.png");
Nach dem Login kopieren

Der Speicherdialog wird möglicherweise nicht angezeigt, obwohl die Konsole die richtigen Header anzeigt.

Der entscheidende Fehler liegt in der Content-Type-Header. Für Datei-Downloads sollte es nicht image/png sein, sondern:

header('Content-Type: application/octet-stream');
Nach dem Login kopieren

Ein zuverlässiger Satz von Headern für Datei-Downloads lautet wie folgt:

$quoted = sprintf('"%s"', addcslashes(basename($file), '"\'));
$size   = filesize($file);

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . $quoted); 
header('Content-Transfer-Encoding: binary');
header('Connection: Keep-Alive');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . $size);
Nach dem Login kopieren

Indem sichergestellt wird, dass die korrekten Header vorliegen Header gesendet werden, werden Benutzer mit einem Speicherdialog aufgefordert, wenn sie versuchen, Dateien vom Server herunterzuladen.

Das obige ist der detaillierte Inhalt vonWie kann ich Dateidownloads mithilfe von PHP-Headern zuverlässig erzwingen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage