PHPでファイルをダウンロードさせる処理について質問です。

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」という名前になります

よろしくお願いいたします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2006/09/22 22:46:09
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:kurukuru-neko No.1

回答回数1844ベストアンサー獲得回数155

ポイント5pt

日本語ファイル名を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:も出力した方がよいと思います。

id:staff14

ありがとうございます。

質問にも書きましたが、ファイル名に日本語は使っていません。

Contente-Lengthも試しましたが、変わりませんでした。

何かわかりましたら、また宜しくお願いします。

2006/09/22 21:24:18
id:kurukuru-neko No.2

回答回数1844ベストアンサー獲得回数155

ポイント65pt

以下のPHPは動作しますか?

http://oku.edu.mie-u.ac.jp/~okumura/php/filename.php

違いをみると

filenameの前後"

basename処理

http://jp.php.net/manual/ja/function.basename.php

id:staff14

ありがとうございます。

まさかこんなやり方があるとは知りませんでした!!

無事解決することができました。

2006/09/22 22:44:20

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません