[解決済み] ファイルのダウンロードにContent-Type: application/octet-streamは必要ですか?
質問
その HTTP規格 と書いてあります。
このヘッダー [Content-Disposition: attachment] がレスポンスで使用されている場合 で、content-typeがapplication/octet-streamの場合、暗黙の了解として ユーザーエージェントは応答を表示せずに を直接入力し、'save response as...'ダイアログを開きます。
と読みます。
Content-Type: application/octet-stream
Content-Disposition: attachment
しかし、私はてっきり
Content-Type
となる
application/pdf
,
image/png
など。
とする必要があります。
Content-Type: application/octet-stream
ブラウザにファイルをダウンロードさせたい場合は?
解決方法は?
いいえ。
content-typeは、それが分かっているのであれば、何でも良いはずです。
application/octet-stream
はRFC2046で「任意のバイナリデータ」と定義されており、ディスクに保存されることのみを目的としたエンティティに適しており、その時点から「ウェブ的なもの」からは外れているという明確な重なりがあります。アプリケーション/オクテットストリームで安全にできる唯一のことは、それをファイルに保存して、それが何のためにあるのか誰かが知っていることを願うことです。
を組み合わせて使用することができます。
Content-Disposition
のような他のコンテンツ-タイプとの
image/png
あるいは
text/html
で、表示ではなく保存であることを示します。以前は、いくつかのブラウザが
text/html
でも、この時点では、かなり前のことだと思います(もうすぐ寝るので、今すぐにはたくさんのブラウザをテストするつもりはありません。)
RFC 2616 では、拡張トークンの可能性についても言及しており、最近ではほとんどのブラウザが、拡張トークンを認識します。
inline
は、可能であれば実体を表示したい(つまり、ブラウザが表示方法を知っている型であれば表示するが、そうでなければ選択の余地はない)ことを意味します。もちろん、これはデフォルトの動作ですが、これによって
filename
このヘッダは、ユーザが保存しようとしたときに、ブラウザが (おそらく、ファイル拡張子が当該のコンテントタイプのローカルシステムの規範と一致するように調整されていますが、おそらく一致しません) 推奨するものとして使用されます。
したがって
Content-Type: application/octet-stream
Content-Disposition: attachment; filename="picture.png"
意味 "これが一体何なのかわからない。できればpicture.png"という名前でファイルとして保存してください。
Content-Type: image/png
Content-Disposition: attachment; filename="picture.png"
意味 "これはPNG画像です。できればpicture.png"という名前のファイルとして保存してください。
Content-Type: image/png
Content-Disposition: inline; filename="picture.png"
意味 "これはPNG画像です。PNG画像を表示する方法を知らない場合を除き、表示してください。そうでない場合、またはユーザーが保存することを選択した場合、保存するファイルの名前はpicture.pngとすることをお勧めします"。
を認識するブラウザのうち
inline
常に使用するものもあれば、ユーザーが "名前を付けてリンク先を保存" を選択した場合に使用し、閲覧中に "保存" を選択した場合には使用しないものもあります(少なくともIEは以前はそうでした。)
関連
-
[解決済み] 正しいJSONコンテンツタイプは何ですか?
-
[解決済み] PDFファイルの適切なMIMEメディアタイプ
-
[解決済み] カスタムHTTPヘッダー:命名規則
-
[解決済み] Androidでファイルをダウンロードし、ProgressDialogで進捗を表示する。
-
[解決済み] HTTPでファイルをダウンロードするには?
-
[解決済み] HTTPのContent-Dispositionヘッダーのファイル名パラメータをエンコードする方法は?
-
[解決済み] ブラウザの「F5」や「Ctrl + F5」によるリフレッシュはどのようなリクエストを発生させるのでしょうか?
-
[解決済み】ASP.NET MVCでファイルを表示/ダウンロードに戻す場合
-
[解決済み] HTTP GETリクエストにcontent-typeヘッダーは必要ですか?
-
[解決済み] ブラウザがファイルのダウンロードを受信したことを検出する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] プロキシが全く応答を受け取らない場合、502 HTTPステータスコードを使用すべきですか?
-
[解決済み] react jsでファイルをダウンロードする方法
-
[解決済み] HTTP POSTリクエストでは、どのようにパラメータが送信されるのですか?
-
[解決済み] POSTとGETの違いは何ですか?[重複しています]。
-
[解決済み] HTTPヘッダーの最大値?
-
[解決済み】cURLを使用してBasic HTTP認証を正しく定義する方法は?
-
[解決済み】Node.jsのほとんどのポートでリスニングするとEACCESエラーが発生する。
-
[解決済み】ダイジェスト認証とベーシック認証の違いは何ですか?
-
[解決済み] ログインページにリダイレクトする際の正しいHTTPステータスコードは何ですか?
-
[解決済み] Node.js レスポンスでファイルを送信する