我正在尝试使用ASP.NET MVC将图像上传到SQL数据库。数据库BeforeImage
保持为空,尽管我没有收到任何错误的文件大小和格式。感谢
public class Job
{
public int ID { get; set; }
public byte[] BeforeImage { get; set; }
public byte[] AfterImage { get; set; }
}
查看型号:
public class BeforePhotoVM
{
public int ID { get; set; }
public HttpPostedFileBase BeforeImage { get; set; }
}
得到:
public ActionResult AddBefore(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
var job = db.Jobs.Find(id);
var BeforeVM = new BeforePhotoVM();
//vm = db.Jobs.Find(id);
return View("Job2", BeforeVM);
}
发表:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult AddBefore([Bind(Include = "ID,BeforeImage")] BeforePhotoVM BeforeVM)
{
var job = db.Jobs.Find(BeforeVM.ID);
if (ModelState.IsValid)
{
byte[] BeforeImage = new byte[BeforeVM.BeforeImage.InputStream.Length];
BeforeVM.BeforeImage.InputStream.Read(BeforeImage, 0, BeforeImage.Length);
job.BeforeImage = BeforeImage;
db.Entry(job).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("AddBefore", new { id = job.ID });
}
return View("Job");
}
答案 0 :(得分:0)
看,你做的事太多了,应该很简单。 另外,下次使用你的ajax发布你的html代码。
让我试着帮助你。
在您的asp.net页面上。
你的Html.Begin表单应该有enctype =" multipart / form-data"
像这样@using (Ajax.BeginForm("Here goes ur action", "Here goes ur controller", new AjaxOptions { OnSuccess = "something with sucess" }, new { enctype = "multipart/form-data" }))
考虑到这一点
让我们到你的模型
public byte[] Photo { get; set; }
好的......现在让我们完成控制器
public ActionResult Cadastro(YOURMODEL _model, HttpPostedFileBase file)
{
_model.Photo = new byte[file.ContentLength];
看,你的控制器收了HttpPostedFileBase,你可以访问创建一个新的字节..但是记住..在你的asp.net代码中,文件名必须与你的控制器相同,如下所示
剩下的就是你 希望这会对你有所帮助。