カレッヂ |
質問者 まさひろ
投稿日 1/22(水) 17:52:17
はじめまして、 Perl で書いたCGIでファイルダウンロードを行うプログラムを書いています。 その際、ダウンロード時のファイル名をサーバ側で指定したファイル名にする 方法で悩んでいます。 Windows IE 5.x/6.x だと、CGI側でダウンロードファイル名を以下のように 指定することで、ファイル名が正しく入り、ダウンロード可能です。 print (qq(Content-Type: application/octet-stream\n)); print (qq(Content-Disposition: filename="$filename_sjis"\n\n)); (*) $filename_sjis は、SJIS でエンコードされたファイル名 Windows Netscape 6.x/7.x だと、ダウンロードファイルを作成するCGIを呼び 出す際、 <a href="download.cgi/FILENAME"> のように書いてあげると、英数字のみで記述されているファイル名は正しく ダウンロード可能です。 しかしながら日本を含むファイル名の場合、日本語ファイル名は空白になって しまいます。 これは、Netscape の不具合なのかな・・・とあきらめました。 さて、Mac IE の場合、Windows IE と同じように print (qq(Content-Type: application/octet-stream\n)); print (qq(Content-Disposition: filename="$filename_sjis"\n\n)); だけだと、CGI名(ex. download.cgi) でダウンロードマネージャはダウンロー ドしてしまいます。 そこで、Windows Netscape と同様に <a href="download.cgi/FILENAME"> とした場合、英数字のみで記述されているファイル名は正しくダウンロード できました。 ところが、日本語を含むファイル名としてダウンロードした場合、ファイル名が 化けてしまいます。 長々と書きましたが、ここからが質問です。 ・CGIでファイルダウンロードする際、ファイル名を日本語にしたいのですが 1) Mac IE の場合 2) Windows Nescape の場合 どなたか方法をご存知ないでしょうか? よろしくお願いいたします。
プロバイダ参照: |
回答者 やまだ
[削除]
投稿日 2/3(月) 06:41:48
そもそも、Content-Dispositionでのfilenameは、日本語のファイル名はダメなはず。 RFC2183では、そのようです。 http://www.studyinghttp.net/rfc_ja/rfc2183_ja.html |
質問者 まさひろ
[削除]
投稿日 2/4(火) 13:28:10
まさひろです。 ご回答ありがとうございました。 私もRFC2183 を読んでみましたが、非ASCII文字を使う場合はエンコードしろ、 とは書いてありますが、日本語名はダメとは書いてないと思います。 いかがでしょうか? |
回答者 やまだ
[削除]
投稿日 2/5(水) 01:31:23
以下の文は、可能と言っているのかな? 現在 [RFC 2045] の文法は、パラメータ値 (すなわち Content-Dispositionファイル名) を US-ASCII に限定している。 我々はファイル名に任意の文字セットを許す事を非常に望んでいる事は認めるが、それに必要なメカニズムを定義する ことはこの文書の範囲を超える。我々は基本 [RFC 1521] `value'仕様がいつか非 ASCII 文字を使う事ができるように 修正される事を期待しており、その時は同じメカニズムが Content-Disposition ファイル名パラメータにて使われる べきである。 それから、ここでのエンコードとは、SJIS,EUCとかでなく、7bit,8bit,quoted-printable,base64とかのこと ですよね。 ついでに、 Content-Disposition: [inline|attachment]; のどちらかにしておいたほうがいいんじゃないかな。 |
質問者 まさひろ
[削除]
投稿日 2/6(木) 15:24:21
やまださん、ご回答ありがとうございます。 改めて読み返してみると、確かにおっしゃるとおり現時点では、US-ASCII文字 以外はRFC的にはダメのようです。 また、エンコードについても、おっしゃるとおりだと思います。 ご指摘ありがとうございます。m(._.)m ただ、実際にテストしてみるとお分かりになるかと思いますが、私が最初に書 いたとおりの挙動を示します。 私が皆様にお伺いしたかったのは、実現されたことのある方がどんな風に実装 したか、を教えていただきたかったのであり、RFCやW3C的には…というお話は 私にとっては、あまり興味のない話なので…申し訳ありません。 ご理解いただければ幸いです。 |
返信(回答)する
Web裏技 |