当文件类型不是文本或图片时 ASP.NET MVC3 中正确显示或下载文件



这是我的操作:

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");
    }

相关内容

  • 没有找到相关文章

最新更新