2015-09-16 29 views
0

我有一個返回fileresult的MVC方法(返回PDF文件),我需要在src標記中使用相同的url並在瀏覽器中顯示它。在嵌入標記中呈現MVC Fileresult不是物理Url

比如我示例代碼如下:

public FileResult GetAttachment() 
{ 
    return File(@"c:\sample.pdf", "application/pdf", "sample.pdf"); 
} 

<embed src="/Home/GetAttachment" width="100%" height="1150" type="application/pdf"></embed> 

我給在嵌入標籤的src的actionname,不是有一個解決辦法,以獲得sample.pdf(文件結果),並與渲染瀏覽器。

回答

1

嘗試返回FileStreamResult

public ActionResult GetAttachment() 
{ 
    var fileStream = new FileStream(Server.MapPath("~/Content/files/sample.pdf"), 
            FileMode.Open, 
            FileAccess.Read 
            ); 
    var fsResult = new FileStreamResult(fileStream, "application/pdf"); 
    return fsResult; 
} 

內部視圖:

<embed src="@Url.Action("GetAttachment", "Home")" width="100%" height="1150" type="application/pdf"></embed> 
+0

嗨Sirwan,感謝名單了很多。它的工作。 – Jaswanth

0

最終如何顯示PDF將由系統上安裝的pdf查看器和它的設置決定。這就是說你可能會強制它在某些情況下呈現內聯。你可以嘗試的東西覆蓋的內容配置如

Response.Headers.Remove("Content-Disposition"); 
Response.Headers.Add("Content-Disposition", "inline; filename=sample.pdf"); 
return File(@"c:\sample.pdf", "application/pdf", "sample.pdf"); 

可能要兩個方法 - 一個呈現內聯和一個下載或一個布爾值參數來確定渲染。

0

您可以嘗試

public FileResult GetAttachment() 
{ 
    byte[] contents = System.IO.File.ReadAllBytes(@"c:\sample.pdf"); 
    Response.AddHeader("Content-Disposition", "inline; filename=sample.pdf"); 
    return File(contents, "application/pdf"); 
}