我有一个返回fileresult的MVC方法(返回PDF文件),我需要在src标签中使用相同的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>
我在embed标签的src中给出了actionname,而不是有解决方法来获取sample.pdf(文件结果)并在浏览器中进行渲染。
答案 0 :(得分:3)
尝试返回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>
答案 1 :(得分: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");
您可能需要两种方法 - 一种是内联渲染,一种是下载,另一种是bool参数来确定渲染。
答案 2 :(得分: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");
}