Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Verwenden Sie die Browser-Eingabeaufforderung, um eine Datei herunterzuladen

Die PHP-Dokumentation liefert ein nettes Beispiel:

<?php
$file = 'monkey.gif';

if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);
    exit;
}
?>

BEARBEITEN (Antwort auf Kommentar, Erklärung)

header('Content-Description: File Transfer');

Nicht im Browser anzeigen, sondern die Datei übertragen.

header('Content-Type: application/octet-stream');
header('Content-Transfer-Encoding: binary');

Datei ist eine Binärdatei.
Browser laden im Allgemeinen Binärdateien herunter, es sei denn, sie können sie anzeigen.

header('Content-Disposition: attachment; filename='.basename($file));

Sorgen Sie dafür, dass der Download-Dialog den richtigen Dateinamen anzeigt.
Hinweis:Sie können einen beliebigen Dateinamen verwenden.

header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');

Die Datei sollte nicht vom Browser zwischengespeichert werden.
Cache kann bei dynamischen Inhalten zu Problemen führen.

header('Content-Length: ' . filesize($file));

Senden Sie die korrekte Dateigröße an den Browser,
sonst kann der Browser die Übertragungszeit nicht abschätzen.

ob_clean();
flush();

Stellen Sie sicher, dass die Header an den Browser gesendet werden, bevor der Download beginnt.

readfile($file);

Senden Sie die Datei an den Browser.

exit;

Fertig :)