В моем приложении .Net MVC3 я храню несколько изображений в базе данных SQL Server (они являются .png-файлами). Я бы очень хотел придерживаться этого метода, если это возможно, потому что я предпочитаю работать с базой данных для работы с файловой системой (это небольшая страница, и никто не заметит проблемы с производительностью).Показать изображение с ViewModel
Сохранение изображения в базе данных, кажется, не представляет проблемы. Извлечение данных также не является проблемой. У меня возникают проблемы с отображением изображения в представлении.
Изображение хранится в базе данных SQL Server в виде Varbinary (max). Модель просмотра использует байт [] для хранения информации. View Модель имеет другие данные, хранящиеся в нем, но, насколько образ обеспокоен, вот что я сделал:
контроллер:
ViewModel data = Repository.GetData();
//data now holds all of the information that I need for my view
//data.Image is of type Byte[], and it holds the image I am having trouble displaying.
return View(data);
Посмотреть
@model = data
@Html.DisplayFor(model => model.x) @*works*@
@Html.DisplayFor(model => model.Image) @*no good*@
ли изображение должно храниться в виде временного файла, чтобы это работало? Если это так, похоже, что хранение изображения в базе данных - просто большая трата времени.
Если я возвращаю FileStreamResult в моей модели:
FileStream fs = new FileStream(path, Open, Read);
return View(new FileStreamResult(fs, "image/png"));
.... и меняю модель с моей точки зрения, чтобы быть «FileStreamResult,» Я не могу до сих пор найти не способ отображения изображения.
Но если я возвращаю FileStreamResult так:
FileStream fs = new FileStream(path, Open, Read);
return new FileStreamResult(fs, "image/png");
затем отображается изображение (но я думаю, что это просто браузер «открытие», что файл, а не «делает» как HTML).
Я знаю, что на эту тему уже много, но я посмотрел на них. Я думаю, что мне не хватает фундаментального понимания сети или mvc или чего-то еще.
Спасибо!
Отлично. Я использовал вариант 2, и он отлично работает. Действие LoadImage на моем контроллере возвращает FileContentResult, и изображение отображается. Спасибо. – user1304444