Heim > Backend-Entwicklung > PHP-Tutorial > Wie erzwinge ich Dateidownloads mit PHP mithilfe von „header()'?

Wie erzwinge ich Dateidownloads mit PHP mithilfe von „header()'?

DDD
Freigeben: 2024-12-04 14:54:10
Original
257 Leute haben es durchsucht

How to Force File Downloads with PHP Using `header()`?

Dateidownload mit PHP mithilfe von header() erzwingen

1. Das Problem:

Sie versuchen, Benutzern das Herunterladen von Dateien von Ihrem Server zu ermöglichen, aber die Datei löst kein Dialogfeld „Speichern unter“ aus.

2. Die Ursache:

Falsche Inhaltstypdeklaration im Header.

3. Die Lösung:

Stellen Sie sicher, dass der Inhaltstyp-Header für Dateidownloads auf application/octet-stream eingestellt ist:

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

4. Zusätzliche Tipps:

  • Verwenden Sie die Funktion addcslashes, um den Dateinamen vor Zeichen zu schützen, die den Header unterbrechen könnten.
  • Legen Sie mit Content-Disposition einen bestimmten Dateinamen für die heruntergeladene Datei fest: Anhang; Dateiname= Header.
  • Geben Sie die Inhaltslänge mithilfe des Content-Length-Headers an.
  • Fügen Sie Header hinzu, um Zwischenspeicherung zu verhindern und sicherzustellen, dass die Datei gespeichert und nicht im Browser angezeigt wird.

5. Beispielcode:

$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);
readfile($file);
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie erzwinge ich Dateidownloads mit PHP mithilfe von „header()'?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage