Рендеринг изображения из байта [], которого нет в БД в ASP.NET MVC3 - PullRequest
0 голосов
/ 03 августа 2011

Это вариант вопроса, который задавался здесь несколько раз. Один пример: Отображение изображения, содержащегося в байте [] в 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 Ответ

1 голос
/ 03 августа 2011

Вам необходимо сохранить загруженный файл где-нибудь на сервере, если вы хотите показать его позже (в виде предварительного или полноразмерного изображения).Будь то база данных или файловая система, решать только вам.Поэтому, как только файл загружен, вы можете сохранить его как временный файл в каком-то месте на сервере, переименовав его с помощью некоторого уникального Guid и вернуть этот Guid клиенту, чтобы он мог создать ссылку действия на действие контроллера предварительного просмотра, передавая Guidкоторый извлечет файл из временного местоположения и передаст его клиенту.

...