質問箱/2066

カテゴリ
サマリ添付された *.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 等もダウンロード扱いになります)。

  • plugin/attach.inc.php
    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.'"');

回答

  • いたち? 2004-03-04 (THU) 11:48:05

    Apacheではなく、クライアントの問題ではないでしょうか?
    クライアントのOSが分かりませんが、Windows XPならエクスプローラの[ツール]メニューから[フォルダオプション]を選択し、[ファイルの種類]タブで該当する拡張子を選択して[詳細設定]を行うことで変更できます。

  • 付箋? 2004-03-05 (FRI) 11:01:50

    私は、サーバの返すヘッダ情報に問題があると思うのですが、どうでしょうか?

  • いたち? 2004-03-05 (FRI) 11:37:49

    右クリックの[対象をファイルに保存]と、単なるクリックでリクエストが違うということでしょうか?

    Apacheが生成するヘッダ情報に問題があるならば、上記の2種類でリクエストが異なっている必要があります。

    ちなみに、ヘッダに違いはありましたか?

  • reimy 2004-03-08 (MON) 05:58:55

    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と判断されるはずです。

  • reimy 2004-03-08 (MON) 06:24:03

    URLに添付ファイルのrpmファイルを指定して、WebSnifferでテストしてみました。サーバーからのResponse Headerは次のようになりました。

    Content-Disposition:	inline; filename="test.rpm"
    Content-Type:	application/octet-stream

    RealPlayerのプラグインをブラウザに組み込んでいると、これをaudio/x-pn-realaudio-pluginと拡張子から判断して、プラグインを起動します(サーバーから送られるMIME-TYPEで判断しているのではない)。これはサーバー側の設定ではなく、クライアント側の設定によるものです。プラグインを組み込んでいなければ、ファイルのダウンロードになります。

    というわけで、サーバの返すヘッダ情報に問題はありません。

    • 付箋? 2004-03-08 (MON) 09:41:29

      reimyさん、詳しいレポートありがとうございました。とても分かりやすかったです。

  • 付箋? 2004-03-08 (MON) 10:56:57

    動作プロセスは理解できましたが、rpm ダウンロードするのに、RealOnePlayer が起動してしまうのは、やはりお行儀が悪いです。全ての利用者にブラウザの設定を浸透させるのは限界があるだろうし、サーバ側でうまく吸収する方法があれば良いのですが。 やはり、ブラウザが拡張子で判断している以上、どうする事もできないのでしょうかね?「私ならこうしている」という方、ヒントがあれば教えて下さい。

    • reimy 2004-03-08 (MON) 11:10:55

      RealOnePlayerの「ツール」→「環境設定」の「コンテンツ」→「メディアの種類」で該当するファイル(拡張子)の関連づけをはずすくらいしか方法はないでしょ。関連づけをはずしても再生は可能ですから。

      • 付箋? 2004-03-08 (MON) 15:42:59

        返信頂きましてありがとうございました。 私のやりたかった事が、サーバ側のヘッダ情報を変更するだけで解決できました。詳しくはこちらで

      • reimy 2004-03-08 (MON) 22:45:22

        .rpmに限らず、すべての添付ファイルで同じ動作になりますが、それでよかったんですね? 画像ファイルまでダウンロードになってしまうので、それだと拙いんじゃないかと。それでよいなら、いいんですが。

      • 付箋? 2004-03-09 (TUE) 02:37:26

        画像ファイル用に処理を分岐させても良いですが、全ての添付ファイルがダウンロードになるのも自然だし、こっちの方が良いと思いました。

  • いたち? 2004-03-08 (MON) 19:52:00

    おー、ヘッダ情報も関係があったようですね。

    私も勉強になりました。

    付箋さん、分かりにくいコメント付けてしまいました。これからは気をつけます。⌣

  • 付箋? 2004-03-09 (TUE) 02:00:26

    いたちさん、reimyさん、ありがとう御座いました。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-11-10 (火) 13:20:59
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.286 sec.

OSDN