【问题标题】:How to Open pdf in the browser如何在浏览器中打开pdf
【发布时间】:2013-04-02 12:54:54
【问题描述】:

我有一个gridview,其中有点击链接按钮上的链接按钮我可以下载文件,如pdf、jpeg、doc,但我想在点击链接按钮时显示浏览器本身

string pdfPath = Server.MapPath("~/SomePDFFile.pdf");
WebClient client = new WebClient();
Byte[] buffer = client.DownloadData(pdfPath);
Response.ContentType = "application/pdf";
Response.AddHeader("content-length", buffer.Length.ToString());
Response.BinaryWrite(buffer);

但我想在浏览器的链接按钮内打开像 jpeg、pdf、doc gridview 这样的文件

【问题讨论】:

标签: c# asp.net c#-4.0


【解决方案1】:

这取决于文件类型以及当前系统如何配置来处理该类型。

例如,大多数图像默认在浏览器中打开;然而,对我来说,我已经将 Chrome 配置为 PDF 文件的默认注册应用程序,但这现在几乎不是标准的东西,许多普通用户在安装其他东西时只会被告知要下载的东西,比如 Foxit阅读器 - 在这种情况下,如果浏览器未注册以处理文件类型,则不会发生。

【讨论】:

    【解决方案2】:

    在浏览器中显示 PDF 的第一种方式

    protected void btnOpen_Click(object sender, EventArgs e)
    {
    Response.Redirect("SiteAnalytics.pdf");
    }
    

    通过设置响应对象的内容类型并在标题中添加pdf的二进制形式来在浏览器中显示PDF的第二种方法

    protected void btnpdf_Click(object sender, EventArgs e)
    {
    string path = Server.MapPath("SiteAnalytics.pdf");
    WebClient client = new WebClient();
    Byte[] buffer = client.DownloadData(path);
    
    if (buffer != null)
    {
    Response.ContentType = "application/pdf";
    Response.AddHeader("content-length", buffer.Length.ToString());
    Response.BinaryWrite(buffer);
    }
    

    【讨论】:

      【解决方案3】:

      您可以在同一页面或另一个页面上的 iframe 中显示 pdf、jpg 等。 例如:

      <iframe id="iframe" runat="server" src="NameOfYourFolder/pdf.pdf"></iframe>
      

      在这里,我已经硬编码了将在 iframe 中显示的 pdf 文件的路径。您需要创建一种机制来获取与 GridView 中该链接按钮关联的文件的路径,并通过嵌入的代码块将该路径传递给 iframe 的 src。

      【讨论】:

        【解决方案4】:

        您应该指定Content-Disposition: inline 标头。如果浏览器支持你在Content-Type header 中指定的类型的显示,就会在浏览器中显示。

        相反的是Content-Disposition: attachment,它将强制浏览器为您的内容提供另存为按钮(即使它是 HTML)。

        【讨论】:

          猜你喜欢
          • 2021-03-15
          • 2011-06-12
          • 2017-11-19
          • 1970-01-01
          • 2019-01-04
          • 2017-01-20
          • 1970-01-01
          相关资源
          最近更新 更多