Asp.net mvc 无法使用MVC在浏览器中显示PDF文件

Asp.net mvc 无法使用MVC在浏览器中显示PDF文件,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,我面临一个问题,我无法在任何使用MCV的web浏览器中显示PDF文件。 我没有得到任何错误,只是给我看D�*�光伏�B/���s�梓������������ 我正在使用Bootstrap、Jquery和MVC。 下面是显示PDF的示例代码 public FileResult OpenDocument(int Id) { byte[] data = lst.File; // retrieve byte from db. string mimeType

我面临一个问题,我无法在任何使用MCV的web浏览器中显示PDF文件。 我没有得到任何错误,只是给我看D�*�光伏�B/���s�梓������������

我正在使用Bootstrap、Jquery和MVC。 下面是显示PDF的示例代码

    public FileResult OpenDocument(int Id)
    {
        byte[] data = lst.File; // retrieve byte from db.
        string mimeType = "application/pdf";
        if (mimeType != null)
        {
            Response.ContentType = "application/pdf";
            Response.AddHeader("content-length", data.Length.ToString());
            //Response.BinaryWrite(data);
        }
        return File(data, mimeType);
    }
请帮助我或建议我。 提前谢谢。

这样就可以了

如果希望它在浏览器窗口中打开pdf,只需删除FileDownloadName行

    public ActionResult OpenDocument(int Id)
    {
        try
        {
            byte[] data = lst.File; // retrieve byte from db.
            string mimeType = "application/pdf";
            FileContentResult document = new FileContentResult(data, mimeType);
            document.FileDownloadName = "something.pdf";
            return document;
        }
        catch
        {
            return new EmptyResult();
        }
        return new EmptyResult();
    }

根据您的示例,您需要将
数据
传递到
文件
内容结果

public ActionResult OpenDocument(int Id)
{
    //Code that uses Id to retrieve 1st variable
    //....
    byte[] data = lst.File; // retrieve byte array from db.
    if(data!=null && data.Length > 0) {
        string mimeType = "application/pdf";
        Response.AppendHeader("Content-Disposition", "inline; filename=" + Id + ".pdf");
        return File(data, mimeType);
    }
    return new EmptyResult();
}

这是一个编码问题。尝试在您的回复中添加这一行

 Response.Charset = "utf-8"; 

请注意,这现在有点过时了,但我最近在使用Rotativa/DinkToPDF时遇到了相同的问题。 结果代码很好,但我看到了�这是因为我通过ajax发布了表单

我禁用了ajax表单发布,它成功了


希望这有助于这看起来可疑:
返回文件(mimeType,mimeType)
您正在对这两个参数使用
mimeType
。。。1参数不应该是文件数据或路径吗?@zgood:请将其作为答案发布,因为这正是这里的问题所在。嗨@Nishant,你尝试过我的解决方案吗?这就是我在我的应用程序中所做的,它肯定是有效的。因此,如果您实现了这一点,但仍然存在相同的问题,那么问题在于如何存储或检索Byte[]数据!默认配置是内联的。因此,这与OP的问题无关。嗨@Nkosi,谢谢你的建议,但仍然有一个问题是persist,告诉我D�*�光伏�B/���s�梓������������ 在浏览器中。请建议。谢谢。**应用您的建议后,浏览器中的pdf显示仍为:**%pdf-1.3%���� 12 0 obj endobj 31 0 obj/Filter/FlateDecode/ID[]/Index[12 31]/Info 11 0 R/Length 93/Prev 54710/Root 13 0 R/Size 43/Type/XRef/W[1 2 1]>>流h�bbd
b`Z$l��F��$�8.��C�����-�A.�� v�bՁX�@�k2��五十) *L� U�D�~0}�1 endstream endobj startxref 0%%EOF 42 0 obj流h�b``f
�e
a
�<代码>@�+你看了其他答案。如果这对你不起作用,那么你应该看看它们是否起作用。