メインメニューを開く

差分

ASP.NET CoreでPDFを強制ダウンロードさせる

1,175 バイト追加, 2017年10月5日 (木) 05:46
ページの作成:「Acrobat Readerのプラグインが入ったIE8などの古い環境では、Content-Dispositionを使ってPDFをダウンロードさせようとしてもプラグイ...」
Acrobat Readerのプラグインが入ったIE8などの古い環境では、Content-Dispositionを使ってPDFをダウンロードさせようとしてもプラグインで開いてしまう。
そういう場合は、ContentTypeに「application/force-download」を指定するとよいらしい。正確にはMIMEタイプに存在しない文字列ならば何でもよいらしい。

<source lang="csharp">
public IActionResult DownloadPDF()
{
var file = $"wwwroot/manual.pdf";

// Content-TypeにMIMEタイプに存在しないものを指定するとブラウザは「選択画面」または「ダウンロード」を実行する。
// ここでは「application/force-download」としているがMIMEタイプに存在しなければ何でもよい。
Response.ContentType = "application/force-download";
Response.Headers.Add("Content-Disposition", "attachment; filename=fileName.pdf");
Response.Headers.Add("X-Content-Type-Options", "nosniff");

return File(System.IO.File.ReadAllBytes(file), "application/pdf");
}
</source>

[[category: ASP.NET Core]]
匿名利用者