文件上传并错误地保存到数据库

我在将文件上传到数据库时遇到了一些问题。 我上传的表格具有以下结构:

dbo.Cover CoverID int PK CoverFileContent varbinary(max) CoverMimeType nvarchar(50) CoverFileName nvarchar(50) FileID int FK 

我可以使用我的MVC应用程序上传文件而没有任何错误,但是在数据库中,文件在CoverFileContent中存储为“0x0000000000000000 ……”。 与文件相关的所有其他信息,例如MimeType,FileName,CoverID等,都可以正确上传。 我猜测这不正确,所以我下载了文件(创建了一个.net MVC下载器)。 它似乎下载为正确的文件类型,但是当我试图打开它时,它告诉我我无法打开它。

这是我正在遵循的原始教程: 教程 。 我已经完美地工作了,但是我想使用ADO.net,所以我重写了一点。 我没有做任何重大更改,但从我的代码中可以看出,所以我不确定为什么会发生这种情况。

我在我的应用程序中插入了断点,以查看字节数组是否实际被填充,这只是零,但只有零。 替代文字

封面控制器

 public ActionResult CreateCover(int id) { Cover cover = new Cover(); cover.FileID = id; return View(cover); } // //POST: /File/CreateCover [HttpPost] public ActionResult CreateCover(Cover cover) { cover.CoverMimeType = Request.Files["CoverUpload"].ContentType; Stream fileStream = Request.Files["CoverUpload"].InputStream; cover.CoverFileName = Path.GetFileName(Request.Files["CoverUpload"].FileName); int fileLength = Request.Files["CoverUpload"].ContentLength; cover.CoverFileContent = new byte[fileLength]; fileStream.Read(cover.CoverFileContent, 0, fileLength); cover.FileID = int.Parse(Request.Form["FileID"]); filerepository.AddCoverData(cover); filerepository.Save(); return View(cover); //return View("CreatePdf", "Pdf", new { id = cover.FileID }); } 

CreateCover.aspx

 <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>  CreateCover   

CreateCover

model.FileID) %>

可能是因为你没有Close()你的Stream

 HttpPostedFileBase file = Request.Files["CoverUpload"]; cover.CoverMimeType = file.ContentType; cover.CoverFileName = Path.GetFileName(file.FileName); cover.FileID = int.Parse(Request.Form["FileID"]); byte[] input = new byte[file.ContentLength]; using (Stream s = file.InputStream) { s.Read(input, 0, file.ContentLength); } cover.CoverFileContent = input; filerepository.AddCoverData(cover); filerepository.Save(); return View(cover);