我现在需要在数据库中保存多图像,而后续代码只保存一个图像
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>
答案 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();
}
}
希望这个想法有所帮助。