PHPめも

phpからファイルをダウンロードさせると、headerのContent-Lengthが何故か0になったり、ダウンロードしたファイルサイズが0byteだったりと何かとハマります。

以下の様に書くとうまくいきました。
おそらくこれが最強です。

set_time_limit(0);
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.$file);
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: '.filesize($file));
ob_clean();
flush();
$handle = fopen($file, 'rb');
while (!feof($handle)) {
    echo fread($handle, 4096);
    ob_flush();
    flush();
}  
fclose($handle);

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-09-19 (日) 19:09:36