web-dev-qa-db-ja.com

「名前を付けて保存」ダイアログを強制せずに応答ファイル名を設定する方法

適切なcontent-typeヘッダーを設定して、何らかの応答でストリームを返しています。私が探している動作はこれです:

  • ブラウザが指定されたコンテンツタイプのコンテンツをレンダリングできる場合、ブラウザウィンドウに表示する必要があります。

  • ブラウザがコンテンツのレンダリング方法を知らない場合、「名前を付けて保存」ダイアログが表示され、ファイル名は応答で指定されたものになります。

問題は、Content-Dispositionヘッダーを次のように設定すると:

「attachment; filename = "myfile.txt"」

ブラウザは常に「名前を付けて保存」ダイアログを表示します。

Content-Dispositionを設定しない場合、[名前を付けて保存]ダイアログで使用されるファイル名は、私の場合は機能しないURLのファイル名です。

Content-Dispositioninlineに設定しようとしましたが、結果は同じです。

108
Hugo Palma

正しい方法は次のとおりです。

Content-Disposition: inline; filename="myfile.txt"

159
Patonza

デフォルトで可能かどうかはわかりません。セキュリティ上の懸念により、ブラウザは処理可能なすべてのコンテンツタイプを送信するわけではありませんが、いくつかのAccept-Encoding、これはシナリオではあまり役に立ちません。

ユーザーが何を好むかをユーザーに尋ね、その情報をプロファイルに保存することができます。

2
Rubens Farias