Dateidownload mithilfe der PHP-Funktion header() erzwingen
Beim Versuch, Benutzern Dateidownloads von Ihrem Server anzubieten, kann es zu unerwarteten Herausforderungen kommen . In PHP wird für diesen Zweck häufig die Funktion header() verwendet, aber verschiedene Codebeispiele führen oft zu enttäuschenden Ergebnissen.
Betrachten Sie beispielsweise den folgenden Code:
$size = filesize("Image.png"); 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");
Trotz der Einstellung von Wenn die erforderlichen Header, einschließlich der korrekten Content-Disposition zum Auslösen des Datei-Download-Dialogs, nicht ausgeführt werden, tritt das gewünschte Verhalten nicht auf auftreten.
Lösung:
Um dieses Problem zu beheben, stellen Sie sicher, dass der Content-Type-Header auf „application/octet-stream“ statt auf „image/png“ gesetzt ist " oder ein anderer MIME-Typ. Beispielsweise sollten die folgenden Header das Herunterladen von Dateien durchgängig erzwingen:
$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);
Durch die Verwendung dieser Header sollten Sie in der Lage sein, Dateidownloads von Ihren PHP-Webanwendungen zuverlässig zu erzwingen.
Das obige ist der detaillierte Inhalt vonWie kann ich Dateidownloads mithilfe der PHP-Funktion „header()' zuverlässig erzwingen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!