这是我的操作:
public FileResult ShowFile(long Id) {
DAL.Files.File file = new DAL.Files.FileAccess().GetById(Id);
return File(file.Content, file.FileType);
}
GetById
方法从SQL DB返回一个文件,当文件类型是文本或图片时,一切都可以并且可以正确显示文件,但是当文件类型不同时,例如显示一些Unicode的PDF,那么如何正确显示PDF文件,或者让用户下载它?
File()
方法的第二个参数必须是 MIME 类型。所以说你的文件是PDF,如果你这样做,它应该可以工作:
public FileResult ShowFile(long Id) {
DAL.Files.File file = new DAL.Files.FileAccess().GetById(Id);
// assuming file is a PDF
return File(file.Content, "application/pdf");
}
要改为强制下载,请使用采用第三个参数的File()
重载:
public FileResult ShowFile(long Id) {
DAL.Files.File file = new DAL.Files.FileAccess().GetById(Id);
// assuming file is a PDF
return File(file.Content, "application/pdf", "some-pdf-file.pdf");
}
如上所述,您需要添加应用程序/pdf,但是我还需要标题正确。
public FileResult ShowFile(long Id)
{
DAL.Files.File file = new DAL.Files.FileAccess().GetById(Id);
// assuming file is a PDF
Response.AppendHeader("Content-Disposition", "inline; filename=CustomInvoice.pdf");
return File(file.Content, "application/pdf", "some-pdf-file.pdf");
}