【问题标题】:The character encoding of the plain text document was not declared. in ASP.NET MVC for downloading PDF未声明纯文本文档的字符编码。在 ASP.NET MVC 中用于下载 PDF
【发布时间】:2015-12-26 10:18:51
【问题描述】:

我在 MVC 项目中有一个链接,通过单击在浏览器中下载的 PDF 的链接,基于数字的检索部分由 WebApi 服务完成,该服务将 PDF 作为字节数组返回,在我的 MVC 中我下载了 PDF .

这在本地工作,即使 webAPI 是生产它也在工作。但是当我在服务器上上传项目时,PDF 下载不起作用。我在 IE 和 Chrome 中没有得到任何东西,但在 Firefox 中我在控制台中得到了这个,我不确定这是否是不显示 PDF 的原因。

未声明纯文本文档的字符编码。如果文档包含 US-ASCII 范围之外的字符,则文档将在某些浏览器配置中呈现乱码。文件的字符编码需要在传输协议中声明或者文件需要使用字节序标记作为编码签名。

这是我在 ASP.NET MVC 中调用 WebAPI 并下载 PDF 的代码:

    [HttpGet]
    public FileResult openPdf(string FileName, string Number)
    {
        try
        {
            string completeFileName = FileName + ".pdf";
            byte[] pdfByte = DownloadFile(completeFileName, RemoteRefNumber);
            return File(pdfByte, "application/pdf", completeFileName);
        }
        catch (Exception e)
        {
            return null;
        }
    }

    internal byte[] DownloadFile(string FileName, string Number)
    {
        string url = string.Empty;

        url = ConfigurationManager.AppSettings["RefTest"].ToString();

        try
        {
            string serverUrl = string.Format(url + "GetPdfName/GetPdfName?Number={0}", Number);

            var client = new System.Net.WebClient();

            client.Headers.Add("content-disposition", string.Format("inline;FileName=\"{0}\"", FileName));

            return client.DownloadData(serverUrl);
        }
        catch (Exception e)
        {
            return null;
        }
    }

【问题讨论】:

  • 您在html 中添加了meta tags 吗?希望您已添加!
  • @GuruprasadRao 我必须在哪里添加它?我没有 HTML 标签,这段代码在控制器中,我有与之关联的 View。
  • 是的,你应该把它放在你的视野中..Layout.cshtml 基本上..

标签: c# asp.net-mvc asp.net-mvc-4 pdf asp.net-web-api


【解决方案1】:

它在本地正常工作的事实表明该问题是特定于服务器的问题。您可能需要考虑阻止下载到 pdf 的服务器的安全设置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-27
    • 2019-04-14
    • 2012-07-22
    • 2015-12-05
    • 2012-11-09
    相关资源
    最近更新 更多