如何在ASP.Net MVC 5中显示上载文档的预览

时间:2017-08-26 07:52:23

标签: c# asp.net asp.net-mvc razor asp.net-mvc-5

我有一个表格,我从用户那里获取基本的简历信息,然后有一个上传按钮用于恢复上传。现在我想要一个“详细信息”页面,我可以在其中显示“恢复”表单的用户输入的详细信息。我能够显示除(上传文件)之外的所有模型属性。是否有某种方法可以显示在详细信息页面中上传的文档的某种预览窗格。

视图模型:

public class ResumeViewModel
{
    [Required(ErrorMessage = "Enter Resume Name.")]
    [Display(Name = "Resume Name")]
    public string ResumeName { get; set; }

    [FileType("pdf|doc|docx|PDF", ErrorMessage = "File type is not valid.")]
    [Required]
    [Display(Name = "Upload Resume")]
    public HttpPostedFileBase UploadedResume { get; set; }
}

目前,我可以使用以下代码下载文件

   public FileContentResult Download(int? resumeId)
        {
            var temp = _context.Resumes.Where(f => f.ResumeId == resumeId).SingleOrDefault();
            var fileRes = new FileContentResult(temp.Content.ToArray(), temp.ContentType);
            fileRes.FileDownloadName = temp.FileName;
            return fileRes;
        }

但是如何在某些页面中显示它以及其他模型属性?

1 个答案:

答案 0 :(得分:0)

您可以使用对象标记

执行此操作

首先创建一个页面来查看上传的文件

CSHTML

<object data='@Url.Action("GetFile")' type="@Viewbag.Type" width="700" height="700"></object>

并在FileController中

     public ActionResult Index(int? resumeId)
                {               

                  var temp = _context.Resumes.Where(f => f.ResumeId == 
                  resumeId).SingleOrDefault();
                  var fileRes = new FileContentResult(temp.Content.ToArray(), 
                  temp.ContentType);
                  Session["Path"]= temp.FileName;
                  Session["Type"]=temp.ContentType
                  return View();
                }
and Action of File

public ActionResult GetFile()
        {
            if (Session["Path"] != null)
            {
                FileStream fileStream = new          
                FileStream(Session["Path"].ToString(), FileMode.Open, 
                FileAccess.Read);
                ViewBag.Type=Session["Type"]
                return File(fileStream, Session["Type"]);
            }
            return View("NotFound");
        }