サーバ上に保存したファイルをダウンロードするときに、日本語ファイル名でダウンロードできるようにするためのプログラム片。
昔どこかで書いた記憶があったけど、思い出せなかったのでこちらに備忘的に書いておく。
ディレクトリの構成は以下のような感じ
-/dir/a.xsl
-/dir/download.php
download.phpはこんな感じ
|php|
<?
$file_name = basename(“エクセル.xls”);
$file_path = “a.xls”;
$mime_type = “application/octet-stream”;
// IEならば、ファイル名をURLエンコードしないと文字化けるため
if( ereg( "MSIE", getenv( "HTTP_USER_AGENT" ) ) )
$file_name = urlencode($file_name);
if (file_exists($file_path)) {
// 色々ヘッダを出力
// apache_setenv('ACCESS_ALLOW', '1');
header("Cache-Control: public");
header("Pragma: public");
header('Content-type: {$mime_type}');
header("Content-Disposition: attachment; filename={$file_name}");
// apache_setenv('ACCESS_ALLOW', '');
// mb_http_output("pass");
if (readfile($file_path)) {
exit;
}
}
||<
使い方
上記PHPファイルにアクセスすれば、おそらく「エクセル.xsl」というファイル名でダウンロードのダイアログが開くはず。
※ あまりちゃんと考えていないので、流用の際は気をつけてください