phpファイルダウンロード @phpspot開発日誌

PHPでファイルをDLさせる際のPHPコード例

通常、PHPでファイルをダウンロードさせるとすると、次のようにシンプルにかけます。

<?php
header(‘Content-Type: application/octet-stream’);
echo file_get_contents(“dl.zip”);
?>

が、これだと、ダウンロード時に、保存名がアクセスしたphpでのファイル名になってしまいます(例えば、dl.php)。
そこで次のように Content-Disposition でファイル名をブラウザに通知することで、dl.zip としてダウンロードさせられます

<?php
header(‘Content-Type: application/octet-stream’);
header(‘Content-Disposition: filename=dl.zip’);
echo file_get_contents(“dl.zip”);
?>

ファイルサイズが分からないとブラウザの進捗表示が出来ないので、更に Content-length を付けます。

<?php
header(‘Content-Type: application/octet-stream’);
header(‘Content-Disposition: filename=dl.zip’);
header(‘Content-Length: ‘.filesize(‘dl.zip’));
echo file_get_contents(“dl.zip”);
?>


進捗も表示!

ファイルのダウンロードのさせ方はここまで。

で、先日紹介した、「使えるPHP等のコードスニペット(16進カラーを反転など)が一杯のサイト」で掲載されていた、「File download with speed limit」を参考にすれば、更にファイルのダウンロードに速度制限を設けることも出来るみたい。

単純にfopen してsleepしながらflushしているだけみたいですが。
何らかの理由でダウンロード速度を制限したい場合に参考にできますね。

関連エントリ