2014-10-12 2 views
0

У меня есть ссылка href на файл PDF, который при нажатии открывается на новой странице в браузере. Я хочу, чтобы это было загружено, а не открывалось на новой вкладке.Загрузите PDF (не открывайте его в браузере) при нажатии

Итак, как сделать ссылку на файл 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(); 
    } 
} 
+0

Можете ли вы опубликовать некоторый пример url для файла PDF, который вы показываете? – Michael

+0

Когда щелкнули, это указывает на что-то подобное на новой вкладке: http: // localhost: 52747/PDF/CSS% 20Quick% 20Syntax% 20Reference.pdf – user123456

ответ

2

Просто добавьте атрибут download к <asp:HyperLink>.

Окончательный код будет.

<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

+0

Разве это не атрибут 'HTML5'? – Michael

+0

@michaelmoore, да, http://www.w3schools.com/tags/att_a_download.asp –

+0

Тогда я бы предложил упомянуть об этом в вашем ответе, потому что, возможно, OP должен поддерживать несовместимые браузеры html5'. – Michael

0
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.

Смежные вопросы