Mysql
 sql >> Database >  >> RDS >> Mysql

utilizzando il prompt del browser per scaricare un file

La documentazione PHP fornisce un bell'esempio:

<?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;
}
?>

MODIFICA (Risposta al commento, spiegazione)

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

Non visualizzare nel browser, ma trasferire il file.

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

Il file è un file binario.
I browser generalmente scaricano file binari, a meno che non siano in grado di visualizzarli.

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

Fai in modo che la finestra di dialogo di download mostri il nome file corretto.
Nota:puoi utilizzare qualsiasi nome file.

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

Il file non deve essere memorizzato nella cache dal browser.
La cache potrebbe causare problemi in caso di contenuto dinamico.

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

Invia la dimensione del file corretta al browser,
altrimenti il ​​browser non è in grado di stimare il tempo di trasferimento.

ob_clean();
flush();

Assicurati che le intestazioni vengano inviate al browser prima dell'inizio del download.

readfile($file);

Invia il file al browser.

exit;

Fatto :)