使用ASP.NET MVC将图像保存到数据库

我正在尝试使用Create方法将图像保存到数据库。 但尝试此代码时,我收到此错误:

输入不是有效的Base-64字符串,因为它包含非基本64个字符,两个以上的填充字符或填充字符中的非空白字符。*

我是MVC的初学者。 我将非常感谢您的回复,非常感谢您提前。

[Authorize] [HttpPost] public ActionResult Create(Customers saveCustomer) { try { // TODO: Add insert logic here var upload = Request.Files["ImageData"]; if (upload.ContentLength > 0) { string savedFileName = Path.Combine( ConfigurationManager.AppSettings["FileUploadDirectory"], "customers_" + saveCustomer.FirstName + "_" + saveCustomer.LastName + ".jpg"); upload.SaveAs(savedFileName); } _db.Customers.InsertOnSubmit(saveCustomer); _db.SubmitChanges(); return RedirectToAction("Index"); } catch { return View(); } } 

这是我的创建视图代码:

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

Create

Add new customer record
model.FirstName) %>
model.FirstName) %> model.FirstName) %>
model.LastName) %>
model.LastName) %> model.LastName) %>
model.Email) %>
model.Email) %> model.Email) %>
model.Phone) %>
model.Phone) %> model.Phone) %>
model.CustomerNote) %>
model.CustomerNote) %> model.CustomerNote) %>

Web.config文件:

    

数据库输入:

 Column Name Data Type Allow Nulls ImageData image yes 


试试这个:

 string savedFileName = Server.MapPath("/Resources/images/customers/" + "customers_" + saveCustomer.FirstName + "_" + saveCustomer.LastName + ".jpg"); 

代替

 string savedFileName = Path.Combine( ConfigurationManager.AppSettings["FileUploadDirectory"], "customers_" + saveCustomer.FirstName + "_" + saveCustomer.LastName + ".jpg"); 
  1. 如果您的客户模型包含图像字段,则无需保存到服务器端目录。

  2. 表单post不应该有上传文件字段,请将Controller更改为:

================================

 [Authorize] [HttpPost] public ActionResult Create([Bind(Exclude = "ImageData")]Customers saveCustomer, HttpPostedFileBase ImageData) { try { // TODO: Add insert logic here var upload = Request.Files["ImageData"]; string savedFileName = ""; //string for saving the image server-side path if (upload.ContentLength > 0) { savedFileName = Server.MapPath("/Resources/images/customers/" + "customer_" + saveCustomer.FirstName + "_" + saveCustomer.LastName + ".jpg"); //get the server-side path for store image upload.SaveAs(savedFileName); //*save the image to server-side } var index = savedFileName.IndexOf(@"\Resources\"); saveCustomer.ImageData = savedFileName.Substring(index, savedFileName.Length - index); //set the string of image server-side path to add-object _db.Customers.InsertOnSubmit(saveCustomer); // save all field to databae (includes image server-side path) _db.SubmitChanges(); // save database changes return RedirectToAction("Index"); } catch { return View(); } } 
 private byte[] ImageToBytes(Image img, ImageFormat format) { MemoryStream mstream = new MemoryStream(); img.Save(mstream, format); mstream.Flush(); return mstream.ToArray(); }