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

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

Создайте 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(); 
  • Как протоколировать сообщения Trace с log4net?
  • C: Какой символ следует использовать для ptrdiff_t в printf?
  • Код Entity Framework Сначала поддерживаются хранимые процедуры?
  • C: время ожидания подключения сокета
  • Захватите весь текст из html с помощью Html Agility Pack
  • Удалить дескриптор объекта json в динамический объект с помощью Json.net
  • Зачем нужна строка для подключения при использовании boost :: asio?
  • Разрешить отображение динамических типов с помощью AutoMapper или аналогичного?
  • Как я перемещаю элементы в списке и удаляю их?
  • В C, как я должен читать текстовый файл и печатать все строки
  • std :: shared_ptr безопасность streamа объясняется
  • Давайте будем гением компьютера.