Отображение изображения из базы данных на веб-страницах

1

Я создаю веб-сайт в визуальной студии. Я хочу получить и отобразить изображение (изображения типа данных из базы данных SQL Server) на веб-странице. У меня есть.cshtml-страница и получил следующий код для отображения некоторых полей таблицы. Я могу отображать все, кроме столбца типа данных изображения. Я использую синтаксис бритвы.

МОЙ код

@{
var db1 = Database.Open("database1");
var selectQueryString = "SELECT * FROM Recipes ORDER BY date";
}
<div class="left-content">
<h5>Recent Posts</h5>
 <table>
    <tbody>
    @foreach(var row in db1.Query(selectQueryString))
    {         
    <tr>
        <td>@row.image</td>
        <td>@row.title</td>
        <td>@row.description</td>
    </tr>
    }
    </tbody>
</table>

Это мой вывод на веб-странице:

Recent Posts
System.Byte[]   testaspform     ufegewu
System.Byte[]   testone     qfeyqo
System.Byte[]   testtwo     oadiufh

Как вы могли видеть, первый столбец показывает System.Byte [] вместо изображения.

  • 0
    Вы должны обработать байтовый массив и преобразовать его в изображение. Проведите небольшое исследование о том, как преобразовать байт [] в изображение, это довольно просто сделать. Я постараюсь опубликовать ответ с кодом через несколько минут.
  • 0
    Вы также должны использовать тег HTML img ..
Теги:
razor

1 ответ

5

Вы не можете отображать изображение в html файле без использования <img/>.

Что вы можете сделать, это разместить <img> и создать FileContentResult в своем контроллере и вызвать его в источнике вашего тега с помощью помощника @Url.Action()

== == Код

В вашем HTML:

<img src="@Url.Action("ProcessImage", routeValues: new { imageToProcess = row.image })" />

В вашем контроллере:

public FileContentResult ProcessImage(byte[] imageToProcess)
{
    return new FileContentResult(imageToProcess, "image/jpeg");
}

...

Обязательно поместите метод ProccessImage в тот же контроллер, что и тот, который содержит ActionMethod, который отображает представление, в котором вы находитесь, если это не так, а затем используйте:

HTML:

<img src="@Url.Action("ProcessImage", routeValues: new { controller = "{CONTROLLER_NAME}", imageToProcess = row.image })" />

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню