我现在已经搜索了一段时间,没有任何快乐。我试图将图像保存为我的SQL数据库作为字节数组,然后我试图稍后显示它。显示部分不工作。我不知道保存或显示是否有问题。保存似乎工作正常,我可以在我的SQL表中看到'二进制数据'。有什么建议?
发生的事情是我的页面上出现了破损的图片图标。即使我手动转到网址,例如... / 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>
LoadImage控制器:
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
}
到我的创建视图。
我的代码有什么问题吗?有什么建议?感谢。
答案 0 :(得分:0)
我的GetByteArrayFromFile方法存在问题。我上面的原始方法只返回了一个零数组。使用这个,我解决了我的问题:
private byte[] GetByteArrayFromFile() {
WebImage image = WebImage.GetImageFromRequest();
byte[] byteArray = image.GetBytes();
return byteArray;
}