我使用此代码将图像上传到服务器并存储在数据库中:
认为数据库列是二进制(最大),当我上传一个文件并尝试从数据库中读取它时,只读取总字节数组的一部分(文件流) 被保存到数据库中。
public virtual ActionResult CreateService(Service service, HttpPostedFileBase serviceImage )
{
if (ModelState.IsValid)
{
if (serviceImage != null)
{
var target = new MemoryStream();
serviceImage.InputStream.CopyTo(target);
service.Image = target.ToArray();
}
_serviceTask.AddNewItem(service); // Inserting new entity using NHibernate
}
return RedirectToAction("Index");
}
一切正常,但是当我尝试从数据库中检索它并将其显示给用户时,我得到的图像不完整。例如,用户上传了这张图片:
但是当我检索它时,我得到:
我已将数据库图像列设置为 varbinary(max) 我也尝试了图像数据类型。这是我的表单代码:
@using (Html.BeginForm("CreateService", "Services", FormMethod.Post, new { @id = "dialogForm", @class = "mws-form", @enctype = "multipart/form-data" }))
{
<input type="file" name="serviceImage" />
}
我该如何解决?