ASP.NET MVC 4控制器转发pdf:
public ActionResult Pdf() {
byte[] result = CreatePDF();
var ms = new MemoryStream(result);
return new FileStreamResult(ms, "application/pdf");
}
结果显示在Chrome浏览器窗口中。
如果用户右键单击pdf并选择另存为Chrome,则提供Pdf.pdf
作为要保存的文件名。
如何指定其他默认文件名,例如Order 123.pdf
?
Chrome开发者工具显示文件时没有明确说明:
Cache-Control:private, s-maxage=0
Content-Length:30814
Content-Type:application/pdf
Date:Fri, 14 Oct 2016 19:18:09 GMT
Server:Microsoft-IIS/7.5
X-AspNet-Version:4.0.30319
答案 0 :(得分:1)
尝试使用File
方法。
public FileResult Pdf()
{
byte[] result = CreatePDF();
string fileName = "Order 123.pdf";
return File(result, "application/pdf", fileName);
}
无需在result
MemoryStream
答案 1 :(得分:0)
FileStreamResult
有FileDownloadName
属性,您可以设置
public ActionResult Pdf()
{
byte[] result = CreatePDF();
var ms = new MemoryStream(result);
var fs = new FileStreamResult(ms, "application/pdf") {FileDownloadName = "Hello.pdf"};
return fs;
}
这正是您调用ControllerBase.File
方法的overload which takes the file name时所发生的情况。
public ActionResult Pdf()
{
byte[] result = CreatePDF();
return File(result ,"application/pdf","Hello.pdf");
}