Asp.net-Mvc
ASP.NET MVC FileStreamResult,未使用 fileDownloadName
以下返回瀏覽器嘗試直接內聯顯示的 PDF。這可以正常工作。但是,如果我嘗試下載文件,下載名稱不是“myPDF.pdf”,而是路徑中的 ID(myapp/controller/PDFGenerator/ID)。是否可以將文件下載名稱設置為“myPDF.pdf”?
public FileStreamResult PDFGenerator(int id) { MemoryStream ms = GeneratePDF(id); byte[] file = ms.ToArray(); MemoryStream output = new MemoryStream(); output.Write(file, 0, file.Length); output.Position = 0; HttpContext.Response.AddHeader("content-disposition", "inline; filename=myPDF.pdf"); return File(output, "application/pdf", fileDownloadName="myPDF.pdf"); }
不,這對於內聯顯示的 PDF 是不可能的。如果您將 Content-Disposition 標頭作為附件發送,則可以實現此目的:
public ActionResult PDFGenerator(int id) { Stream stream = GeneratePDF(id); return File(stream, "application/pdf", "myPDF.pdf"); }另請注意,我如何刪除
MemoryStream您正在使用的不必要的內容並將 PDF 載入到記憶體中,您可以直接將其流式傳輸到客戶端,這樣效率會高得多。
如果您使用 FileStreamResult 下載文件,請嘗試在控制器中使用它
Response.ContentType = "application/pdf"; Response.AddHeader("Content-Disposition", "attachment; filename=FileName.pdf");