端くれプログラマの備忘録 PHP [PHP] ブラウザへファイルを送出する

[PHP] ブラウザへファイルを送出する

ブラウザから直接アクセスできないディレクトリにあるファイルをブラウザへ送りたいニーズあり。

たとえば、セキュリティを担保するためにブラウザから直接アクセスできないディレクトリに置いてあるファイルを、ブラウザから認証を経由して取得できるようにしたい場合など。ファイルへ直リンできないので、意図的にファイルの内容を送出するスクリプトを書く必要がある。

サンプルコード

このサンプルでは、ファイルの内容を添付データとして送出しているので、ブラウザは保存先を聞いてくる。

$dir = '/tmp/';
$file = 'testdata.csv';
$path = $dir . $file;

header('Content-type: text/plain; charset=UTF-8');
header('Content-Disposition: attachment; filename='.$file);
readfile($path);