在我的 .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 或其他东西的一些基本理解。
谢谢!