我已经搜索了一段时间,现在没有任何乐趣。我试图将图像作为字节数组保存到我的 SQL 数据库中,然后我试图稍后显示它。显示部分不工作。不知道是存档的问题还是显示的问题。保存似乎工作正常,我可以在我的 SQL 表中看到“二进制数据”。有什么建议么?
发生的事情是我的页面上有一个损坏的图像图标。即使我手动转到 URL 例如 .../Treatments/LoadImage/14 它也坏了。
模型在我的表定义中包含这个:
public byte[] Photo { get; set; }
创建视图:
<div class="editor-label">
@Html.LabelFor(model => model.Photo)
</div>
<div class="editor-field">
<input type="file" name="photo" />
</div>
创建控制器:
[HttpPost]
public ActionResult Create([Bind(Exclude = "Photo")]Treatment treatment)
{
if (ModelState.IsValid)
{
treatment.Photo = GetByteArrayFromFile();
treatment.WebOrder = db.Treatments.Count();
db.Treatments.Add(treatment);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.TreatmentTypeId = new SelectList(db.TreatmentTypes, "Id", "Name", treatment.TreatmentTypeId);
return View(treatment);
}
private byte[] GetByteArrayFromFile() {
int fileLength = Request.Files["photo"].ContentLength;
byte[] byteArray = new byte[fileLength];
return byteArray;
}
显示视图:
<div class="display-label">
@Html.DisplayNameFor(model => model.Photo)
</div>
<div class="display-field">
<img src="@Url.Action("LoadImage", new { Id = Model.Id })" />
</div>
加载图像控制器:
public ActionResult LoadImage(int Id) {
byte[] bytes = db.Treatments.Find(Id).Photo;
return File(bytes, "image/jpeg");
}
我已经添加了:
@using (Html.BeginForm("Create", "Treatments", FormMethod.Post, new { enctype = "multipart/form-data" })) {
// View Code Omitted
}
到我的创建视图。
我的代码有什么基本错误吗?有什么建议么?谢谢。