ASP.NET MVC FileStreamResult,不使用fileDownloadName(A

2019-08-20 03:40发布

下面返回该浏览器尝试直接显示内嵌的PDF文件。 这正常工作。 但是,如果我尝试下载文件时,下载的名称不是“myPDF.pdf”,而是在路线(MYAPP /控制器/的pdfGenerator / ID)的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");
}

Answer 1:

不,这是无法实现的PDF内嵌显示。 你可以做到这一点,如果你作为附件发送内容处置标题:

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

还要注意我如何删除不必要MemoryStream你使用并加载在内存中的PDF在那里你可以有它直接传输到客户端,它会一直有效得多。



Answer 2:

如果您正在使用FileStreamResult下载文件,请尝试使用控制器本

Response.ContentType = "application/pdf";
Response.AddHeader("Content-Disposition", "attachment; filename=FileName.pdf");


Answer 3:

它通过使ID表示没有扩展名的文件名的字符串是可能的。

public ActionResult PDFGenerator(string id, int? docid)
{
    Stream stream = GeneratePDF(docid);
    return new FileStreamResult(stream , "application/pdf");
}

然后,URL,然后这样结束了

  ..PDFGenerator/Document2?docid=15


文章来源: ASP.NET MVC FileStreamResult, fileDownloadName is not used