Cmd + Shift + ] 小林です。
前回の記事、ダウンロード時のファイル名が日本語だったらどうなるの?の結果を踏まえまして、その解決方法のPHPでの一例をご紹介しようと思います。
まずは、ダウンロードさせたいファイル名(例では 絶対に働きたくないでござる.zip)を記述します。こちらはUTF-8で記述します。
$fileName = "絶対に働きたくないでござる.zip";
そもそもファイル名に利用できない文字がありますので、そこは注意する必要があります。せっかく日本語で出力しようとしているので、すべて全角文字を使うくらいの気概を見せましょう。
そして、何はなくともブラウザを判別しなければなりません。IEだけのためにこんなことをしなければなりません。
$userAgent = $_SERVER['HTTP_USER_AGENT'];
これでブラウザのユーザーエージェントを取得できます。ポイントは信じることです。疑う事からは何も生まれません。信じて信じて信じ抜くことです。
そして…
if ( preg_match( "/MSIE/i", $userAgent ) ) {
$fileName = rawurlencode( $fileName );
}
IEだけ。IEだけ別処理です。他の環境はそもそもUTF-8でいいのですからね。
rawurlencode()というのは、「-_.~ を除くすべての非アルファベット文字をパーセント記号(%)に続いて2つの16進数がある表現形式に置き換えた文字列を返す。」関数です。
最後にファイル名を送信してやればいいだけです。
header( "Content-disposition:attachment;filename="{$fileName}"" );
Opera最強伝説!
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。