2012-06-05 88 views
0

我有這樣的代碼..ASP.NET下載對話框

<li><a href="downloads/PDF_File.pdf">PDF</a></li> 

,但它打開PDF文件,現在我新的ASP.NET,我怎麼下載對話框中打開?

+0

檢查:http://stackoverflow.com/questions/364946/how-to-make-pdf-file-downloadable-in -html-link – carny666

回答

0

基本上,這裏發生的是pdf文件的正常行爲。默認情況下,IIS爲您的Web應用程序中的任何pdf文件提供「pdf」MIME類型。當您在您的應用程序中訪問pdf時,瀏覽器將讀取MIME類型並理解您正在訪問PDF文件。大多數瀏覽器都希望將其顯示在其內置的PDF閱讀器中,而不是提示您保存它。如果你真的需要一個下載對話框,以示對PDF文件,你可以改變的MIME類型在web.config中PDF使IIS將成爲了PDF文件作爲你的應用程序中的基本文件類型:

<configuration> 
    <system.webServer> 
     <staticContent> 
      <remove fileExtension=".pdf" /> 
      <mimeMap fileExtension=".pdf" mimeType="application/octet-stream" /> 
     </staticContent> 
    </system.webServer> 
</configuration> 

注:您應該首先刪除您在web.config中手動設置的MIME類型,因爲可能已經在應用程序級別設置了相同擴展名的MIME類型。

現在IIS將提供pdf文件作爲基本/未知文件類型,它們將可下載。這適用於任何文件類型,如果你只是換出一個不同的擴展名「.pdf」。

+0

我該怎麼做那個BumbleB2na ....很棒的名字,真棒電影! – user979331

+0

我試過,但得到這個錯誤請求的頁面無法訪問,因爲頁面的相關配置數據無效。 – user979331

+0

嘿,我編輯了一下答案。確保你把東西放在正確的位置,因爲它聽起來像是一個web.config標記錯誤。 – BumbleB2na

0

我不知道如何與現有文件做到這一點,但前一段時間我寫了一段代碼,將iTextSharp和一個ASP.net(框架4) MemoryStream的對象創建然後下載PDF文件,我希望這會有所幫助:

MemoryStream msPDF = new MemoryStream(); 
// do some stuff with iTextSharp ... 
Response.ContentType = "application/pdf"; 
Response.AppendHeader("Content-Disposition", "attachment; filename=myPdf.pdf"); // open/save dialog 
Response.BinaryWrite(msPDF.ToArray()); 
+0

我還需要添加內容長度,以使其工作,例如: 'Response.AddHeader(「Content-Length」,「」+ data.Length);' – Marcel