C# 使用实体框架从sql db查看和下载文件
我是hamdling实体框架的新手。我使用以下代码在mvc4中插入来自fileupload按钮的文件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
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");
}