【问题标题】:Upload image to SQL database from ASP.NET MVC从 ASP.NET MVC 将图像上传到 SQL 数据库
【发布时间】:2014-09-14 13:08:22
【问题描述】:

我正在尝试使用 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");
}

【问题讨论】:

  • 谢谢,我已经阅读了相当多的内容并遵循了一些类似的内容。这是针对 MungoDB 的,我的错误是特定于我的应用程序的。
  • 你能显示 Job2 视图的代码吗?
  • 对不起,它工作得很好。即使在关闭连接等之后,VS Sever 资源管理器也没有显示更新的表格。

标签: c# asp.net-mvc asp.net-mvc-5


【解决方案1】:

听着,你做的事情太多了,本来应该很简单。 另外,下一次,用你的 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 代码中,你的控制器中的文件名必须与下面的相同

剩下的都在你身边 希望这会对你有所帮助。

【讨论】:

    猜你喜欢
    • 2018-07-01
    • 1970-01-01
    • 2022-11-22
    • 2014-10-18
    • 1970-01-01
    • 1970-01-01
    • 2015-05-20
    • 1970-01-01
    • 2013-09-27
    相关资源
    最近更新 更多