I have a SQL Server table with a varbinary(max)
column. I use it to store images in it.
VariantImage varbinary(MAX) Checked
Then an image is stored in the database using this code:
public async Task<IActionResult> PartVariant(PartVariant model, IFormFile files)
{
if (ModelState.IsValid)
{
DynamicParameters look = new DynamicParameters();
foreach (var file in Request.Form.Files)
{
MemoryStream ms = new MemoryStream();
file.CopyTo(ms);
model.VariantImage = ms.ToArray();
ms.Close();
ms.Dispose();
look.Add("@VariantImage", model.VariantImage);
}
string employee = _db.ExecuteReturnScalar<string>("usp_InsertPartVariant", look);
TempData["Success"] = " Part Variant Added Successfully!";
return RedirectToAction("PartVariant", "MasterViewData");
}
}
It looks like this stored in the database:
0xFFD8FFE000104A46494600010100000100010000FFDB0043000403030403030404040405050405070B07070606070E0A0A080B100E1111100E100F12141A16121318130F10161F171..........................etc
I am unable to load the images back from the datatable.
Controller and model class:
public IActionResult PartVariant()
{
Part_Bind();
viewLookup look = new viewLookup();
var model = look.GetPartVariant(_db, connectionString);
TempData["partVariant"] = model;
return View();
}
public List<PartVariant> GetPartVariant(IDapperORM _db, string connection)
{
SqlConnection conn = new SqlConnection(connection);
List<PartVariant> MasterList = new List<PartVariant>();
SqlCommand com = new SqlCommand("GetPartVariant", conn);
com.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter(com);
DataTable dt = new DataTable();
conn.Open();
da.Fill(dt);
conn.Close();
foreach (DataRow dr in dt.Rows)
{
MasterList.Add(
new PartVariant
{
VariantImage = (byte[])dr["VariantImage"],
}
);
}
return MasterList;
}
I'm getting this error: