asp.net-mvc - ASP.NET MVC FileStreamResult、fileDownloadName 未使用

标签 asp.net-mvc pdf-generation filestreamresult

以下内容返回浏览器尝试直接内联显示的 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 header 作为附件发送,则可以实现此目的:

public ActionResult PDFGenerator(int id)
{
    Stream stream = GeneratePDF(id);
    return File(stream, "application/pdf", "myPDF.pdf");
}

另请注意,我如何删除您正在使用的不必要的 MemoryStream 并将 PDF 加载到内存中,您可以将其直接流式传输到客户端,这样效率会高得多。

关于asp.net-mvc - ASP.NET MVC FileStreamResult、fileDownloadName 未使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15862683/

相关文章:

java - 使用来自 html 的 Flying Saucer 渲染 PDF 中的嵌入图像

java - iText : PDFPTable - Not able to insert data in specific column

c# - 如果成功则返回 FileStreamResult,如果不成功则返回 View

html - 如何在 bootstrap css 中将动态生成的内容 float 到右侧?

javascript - 如何使用 Jquery 从 "li "的属性中获取值?

c# - 模型绑定(bind)自定义类型

asp.net - Session 在 MVC 中实际上是如何工作的?

PHP PDF 生成 - IE7/Acrobat8 : "Website cannot be displayed"

azure - 部署到 Azure 时,具有 mimeType 音频/mpeg 的 FileStreamResult 不会播放流