1

在我的 .Net MVC3 应用程序中,我将一些图像存储到 SQL Server 数据库中(它们是 .png 文件)。如果可能的话,我真的很想坚持使用这种方法,因为我更喜欢使用数据库而不是使用文件系统(它是一个小页面,没有人会注意到性能问题)。

将图像存储到数据库中似乎没有问题。检索数据也不是问题。我遇到的问题是在视图中显示图像。

图像作为 Varbinary(max) 存储在 SQL Server 数据库中。View Model 使用 Byte[] 来保存信息。视图模型中存储了其他数据,但就图像而言,这是我所做的:

控制器:

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"));

....我将 View 的模型更改为“FileStreamResult”,但我仍然找不到显示图像的方法。

但是,如果我像这样返回 FileStreamResult:

FileStream fs = new FileStream(path, Open, Read);
return new FileStreamResult(fs, "image/png");

然后显示图像(但我认为这只是浏览器“打开”该文件,而不是“呈现”为 html)。

我知道关于这个话题已经有很多问题了,但我已经看过了。我想我缺少对 web 或 mvc 或其他东西的一些基本理解。

谢谢!

4

1 回答 1

2

和你的控制器:

    public ActionResult LoadImage(int id)
    {
        // load the image from the database and return the filestream
    }
于 2012-07-04T23:39:24.500 回答