Конвертировать 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. 
}
Другие вопросы по тегам