sql >> Databasteknik >  >> RDS >> Mysql

använda webbläsarens prompt för att ladda ner en fil

PHP-dokumentationen ger ett bra exempel:

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

REDIGERA (Svar på kommentar, förklaring)

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

Visa inte i webbläsaren, utan överför filen.

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

Filen är en binär fil.
Webbläsare laddar vanligtvis ner binära filer, såvida de inte kan visa dem.

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

Låt nedladdningsdialogrutan visa det korrekta filnamnet.
Obs! Du kan använda vilket filnamn som helst.

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

Filen ska inte cachelagras av webbläsaren.
Cache kan orsaka problem vid dynamiskt innehåll.

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

Skicka rätt filstorlek till webbläsaren,
annars kan webbläsaren inte uppskatta överföringstiden.

ob_clean();
flush();

Se till att rubrikerna skickas till webbläsaren innan nedladdningen startar.

readfile($file);

Skicka filen till webbläsaren.

exit;

Klart :)




  1. Varför fördröjer sökningen efter null den här frågan?

  2. Oracle:Välj datum mellan datumintervall med SQL

  3. PHP Arv och MySQL

  4. många-till-många och många-till-många korsningar