データベースからファイルを提供するときに、次のasp.netコードが非常に役立つことがわかりました。
Response.AppendHeader("content-disposition", "attachment; filename=" + fileName);
これにより、ユーザーはファイルをコンピューターに保存し、ブラウザーがファイルを使用しようとする代わりに、その使用方法を決定できます。
Content-disposition応答ヘッダーを使用して他にどのようなことができますか?
RFC 6266 は、以下で参照されているRFCに優先することに注意してください。 セクション7 は、関連するセキュリティ上の懸念の一部を説明しています。
Content-dispositionヘッダーの権限は RFC 1806 および RFC 2183。 人々も考案しました content-dispositionハッキング。 注意することが重要ですcontent-dispositionヘッダーはHTTP 1.1標準の一部ではありません。
HTTP 1.1標準( RFC 2616 )では、コンテンツの性質によって起こりうるセキュリティの副作用についても言及しています。
15.5コンテンツ処理の問題
RFC 1806 [35]、そこから頻繁に実装されるContent-Disposition
(セクション19.5.1を参照)HTTPのヘッダーは派生し、非常に多くの
セキュリティに関する重大な考慮事項。 Content-Dispositionは一部ではありません
HTTP標準ですが、広く実装されているため、
実装者の使用とリスクを文書化する。 RFC 2183 [49]を参照
(RFC 1806を更新)詳細については。
まあ、Content-Dispositionヘッダーは元々、Webではなく電子メール用に作成されたようです。 ( 関連RFCへのリンク 。)
Webブラウザが応答する可能性があると思います
Response.AppendHeader("content-disposition", "inline; filename=" + fileName);
保存するとき、しかし、私はわかりません。
RFC 6266(ハイパーテキスト転送プロトコル(HTTP)のContent-Dispositionヘッダーフィールドの使用)を参照してください http://tools.ietf.org/html/rfc6266
Asp.netユーザーの場合、.NETフレームワークはコンテンツ処理ヘッダーを作成するクラスを提供します。 System.Net.Mime.ContentDisposition
基本的な使用法:
var cd = new System.Net.Mime.ContentDisposition();
cd.FileName = "myFile.txt";
cd.ModificationDate = DateTime.UtcNow;
cd.Size = 100;
Response.AppendHeader("content-disposition", cd.ToString());
MicrosoftサポートセクションのこのKB記事は、ここでの議論に関連していると思います 既知のMIMEタイプのファイルダウンロードダイアログボックスを表示する方法