在网页中显示数据库中的图像

本文关键字:图像 数据库 显示 网页 | 更新日期: 2023-09-27 18:19:06

我在visual studio创建一个网站。我想检索和显示图像(从sql server数据库的数据类型图像)在网页。我有一个。cshtml页面,并得到下面的代码来显示表的一些字段。我能够显示除图像数据类型列之外的所有内容。我正在使用razor语法。

我的代码
@{
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[]代替图像。

在网页中显示数据库中的图像

如果不使用<img/>标记,就不能在html文件中呈现图像。

你可以做的是放置一个<img>标签,并在你的控制器中创建一个FileContentResult,并使用@Url.Action() helper在标签的源代码中调用它…

代码= = = =

在你的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 })" />

我没有构建上面给出的代码,所以您可能需要解决任何拼写/语法错误…