ASP.NET MVC の FileResult をレガシーブラウザでダウンロードするときのサンプルです。 IE8 以下のいくつかの不具合を回避しています。
// ####################
// # Download will fail when the ssl and no-cache.
// ####################
var cacheControl = response.Headers["Cache-Control"];
if (!string.IsNullOrEmpty(cacheControl))
{
response.Headers["Cache-Control"] = RemoveNoCache(cacheControl);
}
var pragma = response.Headers["Pragma"];
if (!string.IsNullOrEmpty(cacheControl))
{
response.Headers["Pragma"] = RemoveNoCache(pragma);
}
// ####################
// # Not supported RFC 6266 (RFC 2231/RFC 5987).
// ####################
var contentDisposition = response.Headers["Content-Disposition"];
if (!string.IsNullOrEmpty(contentDisposition))
{
response.Headers["Content-Disposition"] = ReplaceFileName(contentDisposition);
}
[CompatibleFileResultAttribute]
public ActionResult File(string id)
詳細はこちらへ
- commit ActionResult のレガシーブラウザ互換対応
- ASP.NET MVC の ActionFilter でレガシー IE でのファイルダウンロードの文字化け、不具合と戦う #aspnetjp - KatsuYuzuのブログ
under MIT License