Отображение изображения из базы данных в asp mvc

Я получаю изображение в формате байтового массива от controllerа. Как я могу отобразить это в представлении? самым простым способом.

5 Solutions collect form web for “Отображение изображения из базы данных в asp mvc”

Создайте controller для отображения изображений с помощью действия «Показать», которое отображает идентификатор изображения для отображения из базы данных. Действие должно возвратить FileResult, который содержит данные изображения с соответствующим типом контента.

public class ImageController : Controller { public ActionResult Show( int id ) { var imageData = ...get bytes from database... return File( imageData, "image/jpg" ); } } 

По вашему мнению, постройте изображение и используйте идентификатор изображения, чтобы построить путь для изображения с помощью controllerа и действия.

  

Принятый ответ на использование этого:

  

отлично, но устарел для mvc 4. Обновленный синтаксис должен теперь читать:

  

Кроме того, я обнаружил, что, когда мне нужна эта функциональность, я уже передаю другие данные в представление, поэтому неплохо использовать модель вместо ViewData.

 public class MyModel { public string SomeData {get;set;} public int FileId {get; set;} } 

С вашего controllerа:

 public ActionResult Index() { MyEntity entity = fetchEntity(); MyModel model = new MyModel { SomeData = entity.Data, FileId = entity.SomeFile.ID }; return View(model); } 

Наконец, с вашего взгляда:

  

Метод «Показать» на controllerе для принятого ответа будет работать, но я бы изменил hardcoded «image / jpg» на использование File.ContentType – вы можете сохранить это вместе с байтом [], поэтому вам не нужно гадать, если пользователи загружают свои собственные изображения.

Я знаю, что этот пост довольно старый, но это был один из первых, который появился, когда я пытался выяснить, как это сделать в большинстве случаев. Ответ Augi был правильным, но большинство сборок устарели

  1. i загрузить mvc2 preview 1

  2. не нужно беспокоиться о материале microsoft.web.mvc, я все равно не мог найти что-либо из этого материала и искать около часа, пытаясь понять, что он превратил в

это код, который я написал, который работает для меня для отображения изображения из поля db типа image

в моем classе controllerа, который я назвал хранилищем, у меня есть это

 public ActionResult GetImage(int id) { byte[] imageData = storeRepository.ReturnImage(id); //instead of what augi wrote using the binarystreamresult this was the closest thing i found so i am assuming that this is what it evolved into return new FileStreamResult(new System.IO.MemoryStream(imageData), "image/jpeg"); } //in my repository class where i have all the methods for accessing data i have this public byte[] ReturnImage(int id) { // i tried his way of selecting the right record and preforming the toArray method in the return statment // but it kept giving me an error about converting linq.binary to byte[] tried a cast that didnt work so i came up with this byte[] imageData = GetProduct(id).ProductImage.ToArray(); return imageData; } 

теперь для моей страницы просмотра я пробовал всевозможные способы, которые я нашел в этих формах, и ничего не работало. Я предполагаю, что они были просто устаревшими, поэтому я попробовал по прихотью самую простую вещь, о которой я мог думать, и она отлично работала

  

я продолжал получать сообщение об ошибке с сайта об отправке img-тегов, поэтому убедитесь, что вы изменили приведенное выше изображение на img

надеюсь, что помогает остановить любого из охоты весь день для текущего ответа

http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=30886

 public ActionResult EmployeeImage(int id) { byte[] imageData ="Retrieve your Byte[] data from database"; if (imageData!= null && imageData.Length > 0) { return new FileStreamResult(new System.IO.MemoryStream(imageData), "image/jpeg"); } } 

Предполагая, что у вас есть dataRow (dr) с двумя столбцами, «name» и «binary_image» (binary_image содержит двоичную информацию)

  Byte[] bytes = (Byte[])dr["Data"]; Response.Buffer = true; Response.Charset = ""; Response.Cache.SetCacheability(HttpCacheability.NoCache); Response.ContentType = dr["Image/JPEG"].ToString(); Response.AddHeader("content-disposition", "attachment;filename=" & dt.Rows[0]["Name"].ToString()); Response.BinaryWrite(bytes); Response.Flush(); Response.End(); ,  Byte[] bytes = (Byte[])dr["Data"]; Response.Buffer = true; Response.Charset = ""; Response.Cache.SetCacheability(HttpCacheability.NoCache); Response.ContentType = dr["Image/JPEG"].ToString(); Response.AddHeader("content-disposition", "attachment;filename=" & dt.Rows[0]["Name"].ToString()); Response.BinaryWrite(bytes); Response.Flush(); Response.End(); 
  • Что такое @ перед строкой в ​​C #?
  • Почему я не могу наследовать статические classы?
  • Как перезапустить приложение C # WinForm?
  • Каков правильный счетчик производительности для получения процессора и использования памяти в процессе?
  • Учитывая объект DateTime, как мне получить дату ISO 8601 в строчном формате?
  • Почему переменные не могут быть объявлены в инструкции switch?
  • Алгоритм преобразования RGB в HSV и HSV в RGB в диапазоне 0-255 для обоих
  • Объявление нераспределенного массива в структуре
  • Как читать указанную строку в текстовом файле?
  • Найти, если строка заканчивается другой строкой в ​​C ++
  • LINQ - Полная Outer Join
  • Давайте будем гением компьютера.