如何在浏览器中显示仅包含其内容的图像(byte[])
我正在开发一个 MVC 应用程序,我需要在浏览器中显示图像,但我在磁盘上没有物理文件。
我的模型中只有一个 byte[]
数组,其中包含图像的内容。是否有任何“简单”的技巧可以在视图中显示图像,而不将其写入磁盘?
我想到的第一个方法是编写临时文件,但是:
- 我应该选择什么文件名?
- 我什么时候应该删除它?我担心我们会泄露这些文件。
所以我不想将内容写入文件。还有其他方法吗?
提前致谢。
编辑:结果页面不仅仅是图像,我需要显示一些文本,下面是图像,例如:
<%= Response.Write("Some text here") %>
<%= /* Here my image */ %>
I'm developing a MVC application and I need to show an image in the browser, but I haven't the file physically on disk.
I only have a byte[]
array in my model, with content of the image. Is there any "easy" trick to show the image in the view, without writing it to the disk?
The first approach that comes to my mind is writing a temp file, but:
- What file name should I choose?
- When should I delete it? I'm afraid that we will leak those files.
So I don't want to write the contents to a file. Is there any other approach?
Thanks in advanced.
EDIT: The result page is not only the image, I need to show some text, and below, the image, for example:
<%= Response.Write("Some text here") %>
<%= /* Here my image */ %>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我将创建一个从字节数组返回图像的控制器操作。在您的视图中,您可以使用普通的
标记,将
src
属性设置为呈现图像的控制器操作。它会是这样的:
从你的角度来看,你可以这样做:
I'd create a controller action that returns the image from a byte array. In your view, you can use the normal
<img>
tag, setting thesrc
attribute to your controller action that renders the image.It would be something like this:
From your View you can then do:
几个选项:
Several options:
您可以拥有一个提供图像的页面,如下所示:
您还应该将 context.Response.ContentType 设置为有意义的内容。如果您使用 ImageEncoder 生成字节数组,则可以使用其
mimeType
属性,如果没有 - 找出提供正确内容类型的方法(例如“image/PNG”)
You can have a page that will serve image like that:
You should also set
context.Response.ContentType
to something meaningful. If you use ImageEncoder to generate array of bytes, you can use itsmimeType
property, if not - figure the way to provide a correct content-type (like"image/PNG"
)