下面返回该浏览器尝试直接显示内嵌的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");
}
不,这是无法实现的PDF内嵌显示。 你可以做到这一点,如果你作为附件发送内容处置标题:
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");
它通过使ID表示没有扩展名的文件名的字符串是可能的。
public ActionResult PDFGenerator(string id, int? docid)
{
Stream stream = GeneratePDF(docid);
return new FileStreamResult(stream , "application/pdf");
}
然后,URL,然后这样结束了
..PDFGenerator/Document2?docid=15