Конвертировать varbinary в img и показать изображение в mvc4
Я пишу этот код для сохранения изображения в моей базе данных:
public ActionResult Create(Slider slider)
{
if (ModelState.IsValid)
{
int Len = Request.Files[0].ContentLength;
byte[] fileBytes = new byte[Len];
Request.Files[0].InputStream.Read(fileBytes, 0, Len);
slider.SliderImage = fileBytes;
db.Slider.Add(slider);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(slider);
}
Как я могу изменить varbinary на изображение для отображения моих данных?
2 ответа
Решение
Преобразуйте ваш массив байтов в строку base64 и отобразите его как следующий код для преобразования массива байтов в строку base 64
public static string ToBase64ImageString(this byte[] data)
{
return string.Format("data:image/jpeg;base64,{0}", Convert.ToBase64String(data));
}
Для отображения в виде изображения вы можете использовать следующий код
<img src='@Model.SliderImage.ToBase64ImageString()' />
Не забудьте использовать пространство имен метода расширения в вашем представлении.
Насколько я понимаю вашу проблему, для показа изображений в asp.net MVC ниже будет работать код:-
public ActionResult DownloadFile(int fileId)
{
SliderEntities db = new SliderEntities ();
var content = db.Slider.Where(m => m.ID == fileId).FirstOrDefault();
byte[] contents = (byte[])content.SliderImage; //here varbinary to byte conversion will take place.
return File(contents, "image/jpg"); //here instead of 'jpg' you can return any image format.
}