2009-06-02 209 views
5

我如何(在我的控制器中)發送在瀏覽器中打開的pdf。我試過這個,但它只是下載文件(包括ie和firefox)而不詢問。在瀏覽器插件中打開pdf

public ActionResult GetIt() 
{ 
    var filename = @"C:\path\to\pdf\test.pdf"; 
    // Edit start 
    ControllerContext.HttpContext.Response.AddHeader("Content-Disposition", String.Format("inline;filename=\"{0}\"", "test.pdf")); 
    // Edit stop 
    return File(filename, "application/pdf", Server.HtmlEncode(filename)); 
} 

添加上面的編輯後,它的工作原理應該如此,謝謝。

回答

6

您需要將內容處置HTTP頭設置爲內聯,以向瀏覽器表明它應嘗試使用PDF插件(如果可用)。

類似於:Content-Disposition:inline; filename = test.pdf

請注意,您不能強制使用該插件,這是由瀏覽器做出的決定。

1

我認爲這取決於客戶端如何處理PDF文件。如果已經設置好允許Adobe Reader在瀏覽器插件中打開文件,它會這樣做,但也許你已經設置它來下載文件而不是打開它。 在任何情況下,都無法控制如何在用戶機器上打開PDF文件。

+0

不,我的客戶按照預期在其他網站上工作。有時會下載,有時會在Adobe插件中打開。這可能與發送的頭文件有關。 – Nifle 2009-06-02 11:45:24

+0

是的,它是標題 - 見下面的評論。 – 2009-06-02 11:47:26

2

這(除了其它標題)確實在一個普通的.NET網絡應用特技對我來說:

Response.AddHeader(「內容處置」,的String.Format(「內聯;文件名=」 「{0}」「」,FileName))

我不熟悉MVC,但希望這有助於。