カテゴリ | |
---|---|
サマリ | 添付された *.rpm ファイルをダウンロードすると RealOnePlayer が起動してしまう |
バージョン | 1.4.2 |
投稿者 | 付箋 |
状態 | 完了 |
投稿日 | 2004-03-04 (THU) 11:29:15 |
*.rpm ファイルを添付されている PukiWiki ページから、*.rpm ファイルをクリックすると、ダウンロード確認ダイアログでは無く、RealOnePlayer が起動してしまいます(IE6 で右クリック [対象をファイルに保存] なら問題無くダウンロードできます)。
これは恐らく PukiWiki では無くて Apache の設定の問題だと思うのですが、教えて下さい。
ちなみに Apache 2.0.40 です。
以下の変更を行うと、添付ファイルをクリックする動作がダウンロード扱いになります(ちなみに txt/jpg/gif/pdf 等もダウンロード扱いになります)。
622 // for japanese (???) 623 $filename = htmlspecialchars(mb_convert_encoding($this->file,'SJIS','auto')); 624 header('Content-Disposition: &COLOR(red){inline};; filename="'.$filename.'"'); 625 header('Content-Length: '.$this->size); 626 header('Content-Type: '.$this->type); 627 @readfile($this->filename); 628 exit;624 行目にある inline を attachment へ変えるだけです。
624 header('Content-Disposition: attachment; filename="'.$filename.'"');
Apacheではなく、クライアントの問題ではないでしょうか?
クライアントのOSが分かりませんが、Windows XPならエクスプローラの[ツール]メニューから[フォルダオプション]を選択し、[ファイルの種類]タブで該当する拡張子を選択して[詳細設定]を行うことで変更できます。
私は、サーバの返すヘッダ情報に問題があると思うのですが、どうでしょうか?
右クリックの[対象をファイルに保存]と、単なるクリックでリクエストが違うということでしょうか?
Apacheが生成するヘッダ情報に問題があるならば、上記の2種類でリクエストが異なっている必要があります。
ちなみに、ヘッダに違いはありましたか?
PukiWiki 1.4では、添付ファイルのMIME-TYPEは:config/plugin/attach/mime-typeの中で設定します。設定されていないものについては、Apacheで設定したMIME-TYPEになります。とくに指定していなければ、application/octet-streamのMIME-TYPEになります。デフォルトでは、.rpmに対するMIME-TYPEは:config/plugin/attach/mime-typeの中には設定されていませんので、Apacheでとくに設定しないかぎり、application/octet-streamになります。この場合、左クリックであろうと右クリックであろうと、送られてくるヘッダ情報のMIME-TYPEはいたちさんが書かれているように、同じです。左クリックの時と右クリックの時で、サーバーが異なるMIME-TYPEを送ってきたりはしません。
MIME-TYPEに対する左クリック及び右クリックでのブラウザの挙動は、クライアント側の設定に依存します。RealPlayerのプラグインが組み込まれている場合は、.rpmのファイルのMIME-TYPEはaudio/x-pn-realaudio-pluginと判断されるはずです。
URLに添付ファイルのrpmファイルを指定して、WebSnifferでテストしてみました。サーバーからのResponse Headerは次のようになりました。
Content-Disposition: inline; filename="test.rpm" Content-Type: application/octet-stream
RealPlayerのプラグインをブラウザに組み込んでいると、これをaudio/x-pn-realaudio-pluginと拡張子から判断して、プラグインを起動します(サーバーから送られるMIME-TYPEで判断しているのではない)。これはサーバー側の設定ではなく、クライアント側の設定によるものです。プラグインを組み込んでいなければ、ファイルのダウンロードになります。
というわけで、サーバの返すヘッダ情報に問題はありません。
動作プロセスは理解できましたが、rpm ダウンロードするのに、RealOnePlayer が起動してしまうのは、やはりお行儀が悪いです。全ての利用者にブラウザの設定を浸透させるのは限界があるだろうし、サーバ側でうまく吸収する方法があれば良いのですが。 やはり、ブラウザが拡張子で判断している以上、どうする事もできないのでしょうかね?「私ならこうしている」という方、ヒントがあれば教えて下さい。
RealOnePlayerの「ツール」→「環境設定」の「コンテンツ」→「メディアの種類」で該当するファイル(拡張子)の関連づけをはずすくらいしか方法はないでしょ。関連づけをはずしても再生は可能ですから。
返信頂きましてありがとうございました。 私のやりたかった事が、サーバ側のヘッダ情報を変更するだけで解決できました。詳しくはこちらで。
.rpmに限らず、すべての添付ファイルで同じ動作になりますが、それでよかったんですね? 画像ファイルまでダウンロードになってしまうので、それだと拙いんじゃないかと。それでよいなら、いいんですが。
画像ファイル用に処理を分岐させても良いですが、全ての添付ファイルがダウンロードになるのも自然だし、こっちの方が良いと思いました。
おー、ヘッダ情報も関係があったようですね。
私も勉強になりました。
付箋さん、分かりにくいコメント付けてしまいました。これからは気をつけます。⌣
いたちさん、reimyさん、ありがとう御座いました。