前の記事 ≪:WEBアプリ用のテストデータを作るもの色々
次の記事 ≫:Firefox 3ベータ3リリース

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

2008年02月14日-はてなブックマーク

スポンサード リンク

2008/2/22: sotarok様より、連絡がありコードを一部訂正
参考1)http://d.hatena.ne.jp/odz/20080215/1203099900
参考2) http://d.hatena.ne.jp/cocoiti/20080221#1203611811

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

通常、PHPでファイルをダウンロードさせるとすると、次のようにシンプルにかけます。
<?php
header('Content-Type: application/octet-stream');
readfile("dl.zip");
?>

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

<?php
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="dl.zip"');
readfile("dl.zip");
?>

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

<?php
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="dl.zip"');
header('Content-Length: '.filesize('dl.zip'));
readfile("dl.zip");
?>

進捗も表示!

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

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

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

関連エントリ
関連の記事検索:PHP, ダウンロード, チュートリアル, プログラミング, download, php
スポンサード リンク

By.KJ : 2008年02月14日 10:09 livedoor Readerで購読 Twitterに投稿

間違いの指摘をしていただける方はメール、あるいはTwitter/FBでお願いします(クリック)