Help us understand the problem. What is going on with this article?

Content-Disposition: attachment; filenameのrfc 6266形式

More than 1 year has passed since last update.

書き出すと長くなるので要点のみ。
また例に漏れず試行錯誤の混乱中に書いているので要注意。

失敗時は大抵URL末尾がファイル名になる。

日本語ファイルの文字化けつらひ。

Chrome 62

:rage:NG

filename*="utf8''urlエンコードされたファイル名"

e-mailでもたまにある属性値をダブルクォーテーションで囲む形式。

追記

filename自体へのダブルクォーテーションは可のようだ。

Content-Disposition: INLINE; FILENAME= "an example.html"

Note: This uses the quoted-string form so that the space character
can be included.

引用符があるのでスペースを含めることができるが、URLエンコードするfilename*には関係がない。

RFC 6266 - Use of the Content-Disposition Header Field in the Hypertext Transfer Protocol (HTTP)#example

:smile:OK

filename*=utf8''urlエンコードされたファイル名

IE11

:rage:NG

filename*=utf8''urlエンコードされたファイル名

:smile:OK

filename*=utf-8''urlエンコードされたファイル名

大概のライブラリは表記ゆれを許容してくれるが、IEはダメだったみたい。
また、IEはRFC 6266対応がIE9からと
http://www.msng.info/archives/2014/04/internet-explorer-11-user-agant-change.php
にあったが、開発者ツールのドキュメントモードでバージョンを落とすだけでは再現はしない?(5に落としても成功)

Firefox

他でNGでも大抵うまくいくように見える。

併記方式

filename=hogehoge;filename*=utf8''urlエンコードされたファイル名

filename*=utf8''urlエンコードされたファイル名;filename=hogehoge;

これは各ブラウザfilename*=が優先されるようだ。
filename*=に対応していないブラウザがfilename=を参照してくれることを確認できれば併記方式が安全なのだが…

併記で行けそう

ダウンロードファイル名、文字化けとの格闘 - ねぎぶログ

結論:

ブラウザ判定のロジックを入れ込むことなく、 複数のブラウザにてダウンロードファイルの文字化けを避けたい場合は、 レスポンスヘッダに

Content-Disposition: attachment;
                     filename="ファイル名";
                     filename*=UTF-8''URLエンコーディン
グされたファイル名

上記のように設定しよう。 恐れることはない、filename*が有効なブラウザではfilename側は無視される。

khsk
週一ぐらいでなにか書いていました。 いろいろお休み中。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした