ノリブログ?

アップローダの更新 4/19

カテゴリー:南部ソフトウェア

先日作成したアップローダーの問題点の1つである
日本語のファイルのアップロードがMozilla/Firefoxでは可能だがIEでは正常に処理できない
という問題を本日修正しました。

日本語のファイルのダウンロードについて問題点
IEにおけるheaderのContent-Dispositionのfilenameの扱いが問題の原因でした。

IE以外におけるブラウザでは$fileにファイル名がはいっているとすると
文字コードをEUCからJISに変換し、その後さらにbase64_encodeをかけて書式にしたがって入力すると表示されました。ソースは下のようになっています。
$file = mb_convert_encoding($file,"JIS","EUC-JP");
header("Content-Disposition:
attachment;filename="=?ISO-2022-JP?B?".base64_encode($file)."?="");

しかしIEにおいてはファイル名をUTF-8で表記したものをx-www-form-urlでエンコードするという仕様になっているため上記の方法ではファイル名が文字化けしてしまって正常にダウンロードすることができませんでした。

IEの場合は以下のようにすると正常にダウンロードできるようになりました。
EUCーJPをUTFー8に変換し、さらにurlencodeをかける
ソースは下のようになっています。
$file = mb_convert_encoding($file,"UTF-8","EUC-JP");
$file = urlencode($file);
header("Content-Disposition: attachment;filename="".$file.""");

アップローダはUSER AGENTを取得してブラウザがIEかそうでないかを判別させて2通りの処理をするように変更しました。
かかった時間は2時間ほどです。

関連記事

Track Back URL

name
E-mail(省略可)
URL(省略可)
コメント