Рендеринг изображения из байта [], которого нет в БД в ASP.NET MVC3
Это вариант вопроса, который задавался здесь несколько раз. Один пример: отображение изображения, содержащегося в байте [] с помощью ASP.Net MVC3. Вопрос в том, как визуализировать изображение из байтового массива.
На все эти вопросы есть действие, подобное одному из ответов в ссылке, которую я предоставил выше:
public FileContentResult Display(string id) {
byte[] byteArray = GetImageFromDB(id);
return new FileContentResult(byteArray, "image/jpeg");
}
С тегом изображения, подобным этому:
<img src="@Url.Action("Display", new { id = Model.Id })" />
Это сделано потому, что невозможно отправить байтовый массив через запрос GET, поэтому отправляется только идентификатор, позволяющий выполнить поиск в методе Action. Я получил эту часть, это не проблема. Я пытаюсь создать страницу "Предварительный просмотр", где они могут проверить свою работу перед сохранением в базе данных. Они могут видеть макет заголовка, текста и изображения и решать, сохранять ли, или вернуться назад и еще раз отредактировать. Поэтому часть GetImageFromDB(id) не будет работать, так как объект еще не был сохранен в базе данных.
Есть ли способ сделать это, или мне просто нужно временно сохранить байтовый массив в базе данных и получить к нему доступ для страницы предварительного просмотра?
1 ответ
Вам нужно сохранить загруженный файл где-нибудь на сервере, если вы хотите показать его позже (в качестве предварительного или полноразмерного изображения). Будь то база данных или файловая система, решать только вам. Поэтому, как только файл загружен, вы можете сохранить его как временный файл в каком-то месте на сервере, переименовав его с помощью некоторого уникального Guid и вернуть этот Guid клиенту, чтобы он мог создать ссылку действия на действие контроллера предварительного просмотра, передавая Guid который извлечет файл из временного местоположения и передаст его клиенту.