在 ASP.NET MVC 中,將存儲在數據庫中的文件返回給用戶可能會帶來挑戰。目標是提供兩種選擇:使用瀏覽器確定的 mimetype 由瀏覽器使用合適的應用程序查看文件,以及強制下載文件,而不管文件類型如何。
FileStreamResult 類通常用於發送文件。但是,它默認情況下無法指定文件名,這在處理未知文件擴展名時會導致意外行為。強制指定文件名會導致瀏覽器無法直接打開文件。
為了解決這個問題,我們可以利用 ContentDisposition 類並將 FileName 屬性設置為文檔的實際名稱。此外,將 Inline 屬性設置為 false 會提示瀏覽器下載文件,而不是嘗試打開它。
以下是 ASP.NET Core(完整框架)中的示例實現,該實現還解決了國際字符處理問題:
<code class="language-csharp">public ActionResult Download() { Document document = ...; // 获取文件数据 var cd = new ContentDispositionHeaderValue("attachment") { FileNameStar = document.FileName // 使用 FileNameStar 属性处理文件名中的特殊字符 }; Response.Headers.Add(HeaderNames.ContentDisposition, cd.ToString()); return File(document.Data, document.ContentType); // 返回文件数据和内容类型 }</code>
通過使用 ContentDispositionHeaderValue 類,我們可以確保正確處理文件名中的國際字符。這種方法允許查看和下載文件,並根據瀏覽器的首選項確定所需的行為。
以上是如何在ASP.NET MVC中返回以查看或下載的文件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!