人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

●質問者: staff14
●カテゴリ:コンピュータ インターネット
✍キーワード:Apache application Download EUC-JP EXIT
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● kurukuru-neko
●5ポイント

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

◎質問者からの返答

ありがとうございます。

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

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

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


2 ● kurukuru-neko
●65ポイント

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

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

違いをみると

filenameの前後"

basename処理

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

◎質問者からの返答

ありがとうございます。

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ