私はこのコードを使用して画像をサーバーにアップロードし、データベースに保存します:
データベースの列はbinary(max)だと思いますが、ファイルをアップロードしてデータベースから読み取ろうとすると、合計バイト配列(ファイルストリーム)の一部のみが読み取られます)がデータベースに保存されます。
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" />
}
どうすれば修正できますか?