firefoxでは問題ないのですが、IE6で実行するとファイル名がおかしくなってしまうという現象が発生しています。
(キャッシュを消した後に実行しています)
■環境:
Apache/1.3.34(Unix)PHP4.3
■ダウンロードさせるファイル:
500~600KBのPDF
ファイル名は半角英字
■ダウンロード処理:
if (strstr($_SERVER[ 'HTTP_USER_AGENT' ],"MSIE")){
header("content-type: application/octet-stream");
header("content-disposition: attachment; filename=".mb_convert_encoding($filename,"SJIS","EUC-JP,SJIS"));
}else{
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=\"".$filename . "\"");
}
readfile($file_path);
exit();
IEで実行するとファイル名が以下のようになります
PHPのファイル名.pdf
例:「downloadpdf.php」というPHPファイルの場合「downloadpdf.pdf」という名前になります
よろしくお願いいたします。
日本語ファイル名をfilenameに指定した場合
動作がおかしいようです。
MIMEのISO-2022-JP + BASE64と思って
いたのですが、以下URLだと UTF-8にエンコード
すればよいようです。
参照URL:
http://homepage1.nifty.com/ht_deko/ft0608.html
http://support.microsoft.com/default.aspx?scid=kb;ja;436616
※: Contente-Length:も出力した方がよいと思います。
以下のPHPは動作しますか?
http://oku.edu.mie-u.ac.jp/~okumura/php/filename.php
違いをみると
filenameの前後"
basename処理
ありがとうございます。
まさかこんなやり方があるとは知りませんでした!!
無事解決することができました。
ありがとうございます。
質問にも書きましたが、ファイル名に日本語は使っていません。
Contente-Lengthも試しましたが、変わりませんでした。
何かわかりましたら、また宜しくお願いします。