【php】日本語のファイル名でファイルダウンロードするとき
問題
システムにファイルのダウンロード機能があるのですが、日本語のファイル名でダウンロードさせたいです。
ブラウザによって文字化けしたりするのですが、どうするとよいでしょうか。
答え
<?php //例 $filename = '日本語のファイル名_日本語-の フ/ァイ ル名.pdf'; //ホワイトスペース相当の文字をアンダースコアに $filename = preg_replace('/\\s/u', '_', $filename); //ファイル名に使えない文字をアンダースコアに $filename = str_replace(array('\\','/',':','*','?','"','<','>','|'), '_', $filename); //適当なヘッダ header('Content-Type: application/octet-stream'); //ファイル名はRFC2231形式(最近のブラウザならば対応している) header("Content-Disposition: attachment; filename*=UTF-8''" . rawurlencode($filename)); //内容出力 readfile('出力したいファイル.pdf');
コメント