Asp.net mvc 当文件类型为'时,在ASP.NET MVC3中正确显示或下载文件;文本或图片

Asp.net mvc 当文件类型为'时,在ASP.NET MVC3中正确显示或下载文件;文本或图片,asp.net-mvc,asp.net-mvc-3,sql-server-2008,file,fileresult,Asp.net Mvc,Asp.net Mvc 3,Sql Server 2008,File,Fileresult,这是我的行动: 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文件,

这是我的行动:

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");
}
要强制下载,请使用带有第三个参数的
文件()
重载:

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

如上所述,您需要添加appklication/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");
    }

您的PDF文件的
file.FileType
值是多少?文件结果的可能副本适用于excel和csv。我只是返回带有文件名的内存流。