C# 使用实体框架从sql db查看和下载文件

C# 使用实体框架从sql db查看和下载文件,c#,sql,entity-framework,asp.net-mvc-4,entity-framework-4.1,C#,Sql,Entity Framework,Asp.net Mvc 4,Entity Framework 4.1,我是hamdling实体框架的新手。我使用以下代码在mvc4中插入来自fileupload按钮的文件 public ActionResult Index(NewUserModel newUser) { Resume newuserResume = new Resume(); if (Request != null) { HttpPostedFileBase file = Req

我是hamdling实体框架的新手。我使用以下代码在mvc4中插入来自fileupload按钮的文件

public ActionResult Index(NewUserModel newUser)
        {
            Resume newuserResume = new Resume();
            if (Request != null)
            {
                HttpPostedFileBase file = Request.Files["UploadedFile"];
                if ((file != null) && (file.ContentLength > 0) && !string.IsNullOrEmpty(file.FileName))
                {
                    string fileName = file.FileName;
                    string fileextn = Path.GetExtension(fileName);
                    if (fileextn == ".pdf" || fileextn == ".doc")
                    {
                        string fileContentType = file.ContentType;
                        byte[] fileBytes = new byte[file.ContentLength];
                        file.InputStream.Read(fileBytes, 0, Convert.ToInt32(file.ContentLength));
                        newuserResume.Resumes = fileBytes;
                        Hrentitymodel.Resumes.Add(newuserResume);
                        Hrentitymodel.SaveChanges();
                    }
                    else {
                        ViewBag.FileExtn = "File Should be in .doc or .pdf Format";
                    }
                }
            }
            return View("Index");
        }
它将正常工作,这意味着文件以Varbinary(max)格式存储在DB中。 现在,如何使用MVC4中的entity framework查看和下载sql db中的文件

看法

@{
如果(Model.Logo!=null)
{
字符串imageBase64=Convert.tobase64字符串(Model.Logo);
string imageSrc=string.Format(“数据:image/gif;base64,{0}”,imageBase64);
}
}

假设基本模型为:

public class Resume
{
public int ResumeID {get;set;}
public string Name { get; set; }
public byte[] Resume { get;set; }
}
使用以下命令存储文件:

resume.Resume = new byte[file.ContentLength];
file.InputStream.Read(resume.Resume, 0, (file.ContentLength));
(你就是!)

要查看文件,您需要返回FileContentResult

在您看来,您可以执行以下操作:

@Html.ActionLink("View Resume", "ViewResume", "ResumeController", new { id = resume.ResumeID }, new { @target= "_blank" })
控制器操作将调用该操作以返回文件:

    public FileContentResult ViewResume(int id)
    {
        if (id == 0) { return null; }
        Resume resume = new Resume();
        ResumeContext rc = new ResumeContext();
        resume = rc.Resume.Where(a => a.ResumeID == id).SingleOrDefault();
        Response.AppendHeader("content-disposition", "inline; filename=file.pdf"); //this will open in a new tab.. remove if you want to open in the same tab.
        return File(resume.Resume, "application/pdf");
    }

这是我在数据库中存储文件时实现的基本方法。

您的代码似乎只处理文件是图像时的问题,而不是文件时的问题,我相信问题更多的是,如果您保存一个已上载文件的表单,您将如何查看该表单并查看所述文件,因此为什么他的代码用于.pdf或.doc
    public FileContentResult ViewResume(int id)
    {
        if (id == 0) { return null; }
        Resume resume = new Resume();
        ResumeContext rc = new ResumeContext();
        resume = rc.Resume.Where(a => a.ResumeID == id).SingleOrDefault();
        Response.AppendHeader("content-disposition", "inline; filename=file.pdf"); //this will open in a new tab.. remove if you want to open in the same tab.
        return File(resume.Resume, "application/pdf");
    }