use*_*141 12 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");
}
Run Code Online (Sandbox Code Playgroud)
Dar*_*rov 17
不,内联显示的PDF无法实现.如果您将Content-Disposition标头作为附件发送,则可以实现此目的:
public ActionResult PDFGenerator(int id)
{
Stream stream = GeneratePDF(id);
return File(stream, "application/pdf", "myPDF.pdf");
}
Run Code Online (Sandbox Code Playgroud)
还要注意我是如何删除MemoryStream你正在使用的不必要的,并在内存中加载PDF,你可以直接将它流式传输到客户端,这本来会更有效率.
如果您使用FileStreamResult下载文件,请尝试在控制器中使用它
Response.ContentType = "application/pdf";
Response.AddHeader("Content-Disposition", "attachment; filename=FileName.pdf");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24104 次 |
| 最近记录: |