如何在浏览器中仅显示内容(byte [])的图像

Dan*_*lba 2 html c# asp.net-mvc asp.net-mvc-2

我正在开发MVC应用程序,我需要在浏览器中显示图像,但实际上文件还没有在磁盘上。

byte[]我的模型中只有一个数组,其中包含图像的内容。是否有任何“简单”的技巧可以在视图中显示图像而不将其写入磁盘?

我想到的第一种方法是编写一个临时文件,但是:

  1. 我应该选择什么文件名?
  2. 我什么时候应该删除它?恐怕我们会泄漏这些文件。

因此,我不想将内容写入文件。还有其他方法吗?

先谢谢了。


编辑:结果页面不仅是图像,我需要显示一些文本,下面是图像,例如:

  <%= Response.Write("Some text here") %>
  <%= /* Here my image */ %>
Run Code Online (Sandbox Code Playgroud)

Mic*_*ins 6

我将创建一个控制器操作,该操作从字节数组返回图像。在您的视图中,您可以使用常规<img>标签,将src属性设置为呈现图像的控制器操作。

这将是事情是这样的:

[HttpGet]
public ActionResult Render(...)
{
    byte[] imageBytes = ...;

    MemoryStream imageStream = new MemoryStream();
    imageStream.Write(imageBytes, 0, imageBytes.Length);

    return new FileStreamResult(imageStream, "image/png"); // might be a different mime type depending on your image type
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以从视图中执行以下操作:

<p>Some text here</p>
<img src="<%= Url.Action("Render", "MyController", new { params as needed }) %>" alt="Image" />
Run Code Online (Sandbox Code Playgroud)