【问题标题】:Download a PDF (not opening it in browser) when clicked单击时下载 PDF(不在浏览器中打开)
【发布时间】:2014-10-12 10:08:55
【问题描述】:

我有一个指向 PDF 文件的 href 链接,单击该链接会在浏览器的新页面中打开。我希望这个下载而不是在新标签中打开。

那么如何使 PDF 文件链接可下载而不是在浏览器中打开呢?

代码如下:

<asp:FormView ID="FormView2" runat="server">
            <ItemTemplate>
                <asp:LoginView ID="LoginView1" runat="server">
                    <LoggedInTemplate>
                          <asp:HyperLink ID="HyperLink1" ToolTip="Open" CssClass="button" runat="server" NavigateUrl='<%# Eval("PDFUrl") %>' Text="Open" Target="_blank"></asp:HyperLink>
                        <br />
                    </LoggedInTemplate>
                    <AnonymousTemplate>
                            <p>You need to log in to view the book.</p>
                    </AnonymousTemplate>
                </asp:LoginView>
            </ItemTemplate>
        </asp:FormView>

后面的代码:

protected void Page_Load(object sender, EventArgs e)
{
    int bookId = Convert.ToInt32(Request.QueryString.Get("BookId"));


    using (LibraryEntities entities = new LibraryEntities())
    {
        var book = (from r in entities.Books
                          where r.Id == bookId
                          select r);
        FormView2.DataSource = book;
        FormView2.DataBind();
    }
}

【问题讨论】:

标签: c# asp.net pdf


【解决方案1】:

只需将属性download 添加到&lt;asp:HyperLink&gt;

最终代码将是。

<asp:HyperLink ID="HyperLink1" ToolTip="Open" CssClass="button" runat="server" 
               NavigateUrl='<%# Eval("PDFUrl") %>' Text="Open" Target="_blank" download
</asp:HyperLink>

注意:这是一个HTML5 属性,所以它只适用于HTML5 兼容的浏览器。检查此链接以查看不同浏览器上的download 属性支持 - http://caniuse.com/#feat=download

【讨论】:

  • 这不是HTML5属性吗?
  • 那我建议在你的回答中提一下,因为可能OP需要支持html5不兼容的浏览器。
  • 即使这个属性在代码中无效并且它表明它必须后跟等号和值,它在浏览器中也有效!谢谢阿林丹!
  • @user123456 ,忽略它,继续尝试,它应该可以工作。我也遇到过这个问题,但它最终工作了!
【解决方案2】:
Response.Clear(); //eliminates issues where some response has already been sent
Response.ContentType = "text/plain";
Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.sql", filename));
Response.Write(yourSQL);
Response.End();

here 提出了类似的问题。

【讨论】:

    猜你喜欢
    • 2011-10-11
    • 1970-01-01
    • 2012-08-18
    • 1970-01-01
    • 2014-01-29
    • 1970-01-01
    • 2016-09-11
    相关资源
    最近更新 更多