コンテンツ処理はMIMEプロトコルの拡張であり、MIMEユーザーエージェントに添付ファイルを表示するよう指示します。 Internet Explorerがヘッダーを受信すると、ファイルダウンロードダイアログボックスが起動し、ファイル名ボックスにヘッダーで指定されたファイル名が自動的に入力されます。 (これは設計によるものです。 この機能を使ってドキュメントをユーザーのパソコンに保存するには、ユーザーにどこに保存するか尋ねる必要があります。 )
サーバーがクライアントブラウザにファイルを送信する際、ブラウザがサポートするファイル形式であれば、通常はデフォルトでブラウザで開かれます。txtやjpgなどはブラウザ上で直接表示されます。保存を促す場合は、Content-Dispositionを使って処理する必要があります。鍵は添付ファイルを追加することです:
Response.AppendHeader("Content-Disposition","attachment; filename=FileName.txt");
注意:この方法では保存または開くよう促され、開くことを選んでも、IEが直接開くのではなく、Notepadなどの関連プログラムで開きます。
コンテンツ-処分は、ユーザーがリクエストされたコンテンツをファイルとして保存したい場合にデフォルトのファイル名を提供するものです。 具体的な定義は以下の通りです。
content-disposition = 「Content-Disposition」 ":"
disposition-type *( ";" disposition-parm)
disposition-type = 「愛着」 | disp-extension-token(disp-extension-token)
disposition-parm = filename-parm | disp-extension-parm
filename-parm = "filename" "=" quoted-string
disp-extension-token = トークン
disp-extension-parm = トークン "=" ( トークン | 引用文字列 )
上記の具体的な例を見ることができます。
Cache-Control:private
Content-Disposition:attachment; filename=Index1.png
Content-Length:328462
Content-Type:image/png
Date:Fri, 14 Oct 2016 01:08:04 GMT
Server:Microsoft-IIS/8.0
X-AspNet-Version:4.0.30319
X-AspNetMvc-Version:5.2
X-Powered-By:ASP.NET
Content-Disposition: attachment; filename=“filename.xls”
もちろん、ファイル名パラメータにパス情報を含めることもできますが、User-Agnetはこの情報を無視し、パス情報の最後の部分だけをファイル名として使用します。 このヘッダーをresponseタイプapplication/octet-streamで使うと、内容を直接表示したくないけれど「ファイルダウンロード」ダイアログが表示され、その後「開く」か「保存する」かを自分で決めることになります。
筆記:
1. コード内でContent-Dispositionを使い、ブラウザがダウンロードダイアログをポップアップするようにする。 response.addHeader("Content-Disposition","attachment"); ブラウザキャッシュを無効にしていないか確認してください。 以下は以下の通りです。
response.setHeader("Pragma", "No-cache"); response.setHeader("キャッシュコントロール"、「キャッシュなし」); response.setDateHeader("Expires", 0);
|