Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann ich Dateidownloads in PHP mit „header()' erzwingen und Probleme bei der Browseranzeige vermeiden?

Wie kann ich Dateidownloads in PHP mit „header()' erzwingen und Probleme bei der Browseranzeige vermeiden?

Linda Hamilton
Freigeben: 2024-12-03 06:36:12
Original
438 Leute haben es durchsucht

How Can I Force File Downloads in PHP Using `header()` and Avoid Browser Display Issues?

Dateidownload mit PHP mithilfe von Header() erzwingen

Problem:
Trotz verschiedener Versuche Benutzererfahrung Schwierigkeiten beim Veranlassen von Dateidownloads von einem Server mithilfe der PHP-Funktion header(). Sie beobachten, dass die erforderlichen Header gesendet werden, stoßen jedoch auf Probleme mit der Anzeige des Speicherdialogs.

Lösung:
Um Dateidownloads erfolgreich zu erzwingen, müssen die Header entsprechend eingestellt werden. Der folgende Code geht auf die geäußerten Bedenken ein:

$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

Hauptunterschiede zu früheren Versuchen:

  1. Inhaltstyp: Das Richtige Der Inhaltstyp für Dateidownloads ist „application/octet-stream“ statt „image/png.“
  2. Anführungszeichen für Dateinamen:Der Dateiname muss korrekt in Anführungszeichen gesetzt werden, um zu verhindern, dass potenziell schädliche Zeichen interpretiert werden.
  3. Zusätzliche Überschriften: Der Code enthält die Header „Connection: Keep-Alive“ und „Expires: 0“, die dazu beitragen, zuverlässige Verbindungen sicherzustellen und Caching zu verhindern Probleme.

Verifizierte Browser:
Es wurde bestätigt, dass diese Lösung in Firefox 8.0.1, Chrome 15.0.874.121 und Safari 5.1.1 funktioniert.

Das obige ist der detaillierte Inhalt vonWie kann ich Dateidownloads in PHP mit „header()' erzwingen und Probleme bei der Browseranzeige vermeiden?. 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