从byte []渲染图像,该图像不在ASP.NET MVC3的DB中

时间:2011-08-03 14:17:55

标签: c# image asp.net-mvc-3 render url-action

这是对此问题多次提出的问题的变体。一个例子:Display an image contained in a byte[] with 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请求发送字节数组,所以只发送id允许在Action方法中查找。我得到这个部分,这不是问题所在。我要做的是创建一个“预览”页面,他们可以在保存到数据库之前检查他们的工作。他们可以看到标题,文本和图像的布局,并决定是否保存,或返回和编辑更多。因此,'GetImageFromDB(id)'部分将无法工作,因为该对象尚未保存到数据库中。

有没有办法实现这一点,或者我是否只需要暂时将字节数组保存在数据库中并以此方式访问预览页面?

1 个答案:

答案 0 :(得分:1)

如果要稍后显示(作为预览或完整尺寸图像),您需要将上传的文件存储在服务器上的某个位置。无论是数据库还是文件系统,都取决于您。因此,一旦文件上传,您可以将其作为临时文件存储在服务器上的某个位置,方法是使用一些独特的Guid重命名它,并将此Guid返回给客户端,以便它可以创建一个动作链接到预览控制器操作传递Guid它将从临时位置获取文件并将其传输到客户端。