Mvc3 FileResult和FileStreamResult错误

时间:2013-02-01 19:42:51

标签: html asp.net-mvc asp.net-mvc-3 html5

我有这个控制器动作,它返回一个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。 (结果相同)

任何人都可以帮助我吗?

由于

1 个答案:

答案 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");
 }