search

Found

info 概要

Content-Disposition ヘッダーを RFC 6266/5987 準拠で生成。ASCII の filename と UTF-8 の filename* を同時出力し、非 ASCII 文字や引用符を警告。

📘 使い方

  1. attachment(ダウンロード)か inline(ブラウザ表示)を選ぶ
  2. ASCII ファイル名と、必要なら UTF-8 ファイル名を入力する
  3. サイズや日付を任意で指定し、生成されたヘッダーを確認する

HTTP Content-Disposition ヘッダービルダー

attachment はダウンロード保存、inline はブラウザ内表示を示します

ASCII の互換ファイル名。古いクライアント向けに必須

RFC 5987 で UTF-8 を percent-encoded で出力

生成されたヘッダー

Content-Disposition: attachment; filename="report.pdf"
コピーしました
Article

HTTP Content-Disposition ヘッダービルダー|filename と filename* を同時生成

RFC 6266 と RFC 5987 に従って Content-Disposition ヘッダーを組み立てるツール。ASCII の filename と UTF-8 の filename* を 1 回でペア出力し、非 ASCII 文字や引用符の混入も警告する。ファイルダウンロード用エンドポイントを書くバックエンド開発者向け。

💡 このツールについて

日本語ファイル名をそのまま filename="請求書.pdf" と書くと、一部のブラウザでは保存ダイアログに文字化けした名前が出る。これは filename パラメータが本来 ASCII しか想定していないためで、回避には RFC 5987 形式の filename* を併記する必要がある。

このツールは ASCII フォールバック用の filename と、UTF-8 をパーセントエンコードした filename* を同時に組み立てる。filename*=UTF-8''%E8%AB%8B%E6%B1%82%E6%9B%B8.pdf のような出力を手で書き起こす手間がなくなり、新しいクライアントは filename* を、古いクライアントは filename を読む構成を 1 行で得られる。size・creation-date・modification-date といった補助パラメータにも対応し、日付は HTTP-date(IMF-fixdate)形式に変換して出力する。

🧐 よくある質問

filename と filename* はどちらが優先されますか。 両方が含まれている場合、対応するクライアントは filename* を優先し filename を無視します。filename は古いクライアント向けのフォールバックとして残します。

ASCII 欄に日本語を入れるとどうなりますか。 ヘッダー自体は生成されますが、非 ASCII 文字を検出すると警告を表示します。互換性のため ASCII 欄には半角英数の代替名(例: invoice.pdf)を入れ、日本語名は UTF-8 欄に入れてください。

attachment と inline の違いは何ですか。 attachment はブラウザに保存ダイアログを出させ、inline はブラウザ内での表示を促します。PDF を画面に表示したいなら inline、強制ダウンロードなら attachment です。

ファイル名にダブルクォートやバックスラッシュが含まれるとどうなりますか。 出力時にバックスラッシュでエスケープしますが、これらの文字はヘッダーを壊しやすいため警告を出します。可能な限りファイル名から除外することを推奨します。

size や日付は必須ですか。 いずれも任意です。空欄ならヘッダーに出力されません。size は非負整数のみ受け付けます。

📚 ファイル名文字化けと filename* の背景

日本語ファイル名の文字化けは、ブラウザごとに filename の非 ASCII バイトの解釈が分かれることが原因で長く知られてきた。Firefox では full-width スペースや一部の多バイト文字が保存名で崩れる報告があり、各フレームワークの issue でも繰り返し議論されてきたテーマである。

RFC 5987 が定める charset'language'value 構文は、この曖昧さを UTF-8'' の固定接頭辞で解消する。言語タグ部分は空のまま運用するのが一般的で、ファイル名は言語に依存しないという前提に基づく。filenamefilename* を両方送る二重指定は、新旧クライアントの両対応という実務上の落としどころとして定着している。