当我从数据库中获取文件名时,如何在iframe中显示文档文件?

时间:2016-06-22 07:22:59

标签: javascript model-view-controller

当我从数据库中获取文件名时,如何在iframe中显示文档文件?我的数据库表名是File,我的viewmodel是MyFileModel。

    public ActionResult Create(HttpPostedFileBase file)
       {         
        try
        {
            if (ModelState.IsValid)
            {
                db.Files.Add(new File()
                {
                    FileName = Path.GetFileName(file.FileName)
                });
                db.SaveChanges();
            }
        }
        catch (Exception)
        {
            var error = "Sorry not save";
        }
        return Content("");
    }

     public FileStreamResult GetPDF()
        {
            var file = db.Files.Single(s => s.Id == 1);
            FileStream fs = new FileStream(Server.MapPath(file.FileName), FileMode.Open, FileAccess.Read);
            return File(fs, "application/pdf");
            //return View(Server.MapPath("~/File/SegmentAdd.txt"));
            //return File(fs,"text/plain");
        }

   <div id="frame">
    <iframe src="@Url.Action("GetPDF","Home")" width="900px" height="500px"></iframe>
  </div>
`

2 个答案:

答案 0 :(得分:1)

我发布的答案都是假设的,我没有清晰的解决方案。 如果您没有保存物理文件,请尝试将其保存在文件夹中,然后将名称保存在数据库中或尝试将整个路径保存在数据库中。

方法1

如果要将文件保存在文件夹中,请说 文件 ,最好的办法是在web.config中添加一个密钥(位于根目录下的.config文件)如下

<add key="FilePath" value= "~/File/"/>

然后按如下所示修改您的C#代码

public FileStreamResult GetPDF()
        {
            var file = db.Files.Single(s => s.Id == 1);
            string fileName = file.FileName;
            string filePath = ConfigurationManager.AppSettings["FilePath"] + fileName;
            FileStream fs = new FileStream(Server.MapPath(filePath), FileMode.Open, FileAccess.Read);
            return File(fs,"text/plain"); // "text/plain" if your file content-type is text file
            //return View(Server.MapPath("~/File/SegmentAdd.txt"));
            //return File(fs,"text/plain");
        }

方法2

如果要保存整个路径,那么它会使编码变得更加简单,您无需更改已编写的代码,只需继续编写代码即可。

希望这会对你有所帮助。

答案 1 :(得分:0)

我认为pdf的打开方式取决于用户使用的浏览器。

您可能需要以下内容:https://pdfobject.com/

祝你好运!