PHP経由でファイルダウンロード時に余分なデータが含まれる時の対処法
コード(修正前)
1 2 3 4 5 6 7 8 9 10
| header('Content-Type: force-download'); header('Content-Disposition: attachment; filename='.$fileName); header('Content-Length: '.filesize($filePath));
$handle = fopen($filePath, "r"); while(!feof($handle)) { echo fread($handle, 4096); } fclose();
|
3バイト増えるちゃん
1 2 3 4 5
| -rw-r--r-- 1 hogehoge なし 245239 9月 19 16:12 元ファイル.jpg -rw-r--r-- 1 hogehoge なし 245242 9月 19 16:12 ダウンロードしたファイル.jpg
-rw-r--r-- 1 hogehoge なし 24543 9月 19 16:07 元ファイル.xlsx -rw-r--r-- 1 hogehoge なし 24546 9月 19 16:07 ダウンロードしたファイル.xlsx
|
コード(修正後)
echo前にob_end_clean
を読んで出力バッファをクリアする
1 2 3 4 5 6 7 8 9 10 11 12
| header('Content-Type: force-download'); header('Content-Disposition: attachment; filename='.$fileName); header('Content-Length: '.filesize($filePath));
ob_end_clean(); /* 追記 */
$handle = fopen($filePath, "r"); while(!feof($handle)) { echo fread($handle, 4096); } fclose();
|
参考:出力バッファリング制御