从 ASP.NET MVC3 中不在数据库中的 byte[] 渲染图像

发布于 2024-11-27 20:29:35 字数 764 浏览 0 评论 0原文

这是这里多次提出的问题的变体。一个示例: 显示一个字节中包含的图像[] 与 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)”部分将不起作用,因为该对象尚未保存到数据库中。

有什么方法可以实现此目的,或者我只需将字节数组临时保存在数据库中并以预览页面的方式访问它?

This is a variation on a question that has been asked here several times. One example: Display an image contained in a byte[] with ASP.Net MVC3. The question is how to render an image from a byte array.

In all those questions, there is an Action similar to one of the answers in the link I provided above:

public FileContentResult Display(string id) {   
byte[] byteArray = GetImageFromDB(id);   
return new FileContentResult(byteArray, "image/jpeg");
}

With an image tag similar to this:

<img src="@Url.Action("Display", new { id = Model.Id })" />

This is done because it's not possible to send a byte array through a GET request, so just the id is sent allowing a lookup in the Action method. I get this part, it's not the problem. What I'm trying to do is create a 'Preview' page, where they can check their work before saving in the database. They can see the layout of the Title, Text and Image and decide whether to save, or go back and Edit some more. Therefore, the 'GetImageFromDB(id)' part won't work, since the object has not been saved yet to the database.

Is there any way to accomplish this, or do I just have to save the byte array temporarily in the database and access it that way for the Preview page?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

爱格式化 2024-12-04 20:29:35

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

You need to store the uploaded file somewhere on the server if you want to show it later (as a preview or full size image). Whether it is the database or the file system it is up to you. So once the file is uploaded you could store it as a temporary file on some location on the server by renaming it using some unique Guid and return this Guid to the client so that it can create an action link to a preview controller action passing the Guid which will fetch the file from the temporary location and stream it to the client.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文