将多图像保存在数据库MVC5中

时间:2018-05-14 12:44:54

标签: sql asp.net-mvc database

我现在需要在数据库中保存多图像,而后续代码只保存一个图像

Controller.cs

public ActionResult Create(wood_project wood_project, HttpPostedFileBase file)
    {
        if (ModelState.IsValid)
        {
            db.wood_project.Add(wood_project);

            if (file != null)
            {
                string ImageName = System.IO.Path.GetFileName(file.FileName);
                string physicalPath = Server.MapPath("~/images/" + ImageName);
                file.SaveAs(physicalPath);
                wood_project.Img = ImageName;
            }
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        return View(wood_project);
    }

Create.cshtml

<div class="form-group">
        Image 
        <div class="col-md-10">
            <input type="file" name="file" id="file"  multiple /> 
        </div>
    </div>

I create relationship betwen the tabels 请帮我提供代码?

1 个答案:

答案 0 :(得分:0)

要存储与单个实体相关的多个图像,您需要一个关系模式。

将“Wood_Project”表关联到图像表,其中images表中的每一行都与wood_project_Id相关。然后,您可以将文件直接存储在数据库中,或者只存储文件名并将所有文件存储在目录中。

编辑:这是一些带有一般想法的C#伪代码,将你的wood_project行添加到数据库,然后循环遍历每个图像并将其添加到images表中,原始wood_project_Id作为外键:

            db.wood_project.Add(wood_project);
            db.SaveChanges();


            if (files != null && files.Count > 0)
            {
                string ImageName = System.IO.Path.GetFileName(file.FileName);
                string physicalPath = Server.MapPath("~/images/" + ImageName);
                file.SaveAs(physicalPath);

                //loop through files and add them to new table
                foreach(var file in files)
                {
                    db.MyImagesTable.Add(MyImagesTableObject()
                        {
                            wood_project_Id = wood_project.Id,
                            ImgData = file.data
                        });

                    db.SaveChanges();
                }

            }

希望这个想法有所帮助。