phpでファイルのダウンロード
2006/06/27 | PHPで遭遇した問題とその解決
ウェブ閲覧者からアクセスできないところにあるファイルをダウンロードさせたり、データベース取得したデータをダウンロードさせたりするとか、PHPから動的にファイルを生成してダウンロードさせたい場合は多い。特に管理画面とかではそういう機能をつかうことも多いはず。
ダウンロードに関しては、基本的にプログラムで難しい処理をすることはなく、HTTPレスポンスヘッダで適切なヘッダを返してあげさえすれば、ブラウザがそのようにふるまってくれる。
<?php
header(“Accept-Ranges: none”);
header(“Content-Disposition: attachment; filename=file.txt”);
header(“Content-Transfer-Encoding: binary”);
header(“Content-Length: “. strlen($downloadFile) );
header(“Content-Type: text/octet-stream”);
print($downloadFile);
exit();
?>
とりあえずこれで大丈夫な模様。
Accept-Rangesはbyteを指定すべきかもしれない。
Content-Dispositionはinlineを指定するとおそらくブラウザにインラインで表示されるのだろう。filenameの指定はダウンロードダイアログで表示させるべきファイル名。
・・・そんな感じ。