我有这个控制器动作,它返回一个pdf文档:
public FileResult getPdf()
{
System.IO.FileStream fileStream = System.IO.File.OpenRead("myFile.pdf");
byte[] bytes = new byte[(int)fileStream.Length];
fileStream.Read(bytes, 0, (int)fileStream.Length);
Response.AppendHeader("Content-Disposition", "inline;");
return File(bytes, "application/pdf", "file.pdf");
}
该代码适用于ActionLink:
@Html.ActionLink("Download File","getPdf")
但无法使用:
<embed id="PdfFile" type="application/pdf" src="/Home/getPdf"/>
或
<object id="PdfFile" type="application/pdf" src="/Home/getPdf"/>
或
<script type="text/javascript" >
$(document).ready(function () {
$("#someDiv").load('/Home/getPdf');
});
</script>
这3个选项在visual studio self主机上工作正常,但是当我部署到IIS7时返回“找不到错误404”。 ActionLink也在IIS7中正常工作
这些文件夹拥有所有用户的权限。
我也尝试过使用FileStreamResult和HttpResponse.binaryWrite。 (结果相同)
任何人都可以帮助我吗?
由于
答案 0 :(得分:0)
好的,这应该可以满足您的需求
<object data="src="@Url.Action("GetPDF")"" type="application/pdf" width="300" height="200">
alt : <a href="data/test.pdf">test.pdf</a>
</object>
public FileStreamResult GetPDF()
{
FileStream fs = new FileStream("filename.pdf", FileMode.Open, FileAccess.Read);
return File(fs, "application/pdf");
}