ファイル名に日本語を指定してファイルをダウンロードさせる

技術関係

サーバ上に保存したファイルをダウンロードするときに、日本語ファイル名でダウンロードできるようにするためのプログラム片。

昔どこかで書いた記憶があったけど、思い出せなかったのでこちらに備忘的に書いておく。

ディレクトリの構成は以下のような感じ

-/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」というファイル名でダウンロードのダイアログが開くはず。
※ あまりちゃんと考えていないので、流用の際は気をつけてください

タイトルとURLをコピーしました