如何在内存中显示来自服务器端存储的图像

本文关键字:服务器端 存储 图像 显示 内存 | 更新日期: 2023-09-27 18:09:46

我在服务器端文件夹中保存了图像。服务器拥有映像的路径。客户端不能访问该文件夹,但服务器可以。我不能在img标签的src属性中附加URL,因为浏览器将无法显示,因为客户端没有权限。

在这种情况下如何显示这些图像?我被告知服务器可以将图像保存在内存中,然后在客户端渲染这些图像-我怎么做呢?我使用MVC 4, c#与sql server 2008 r2

如何在内存中显示来自服务器端存储的图像

如果您将图像存储在文件夹中,那么您可以直接使用物理文件路径的File()方法:

public ActionResult Image(string id)
{
    var dir = Server.MapPath("/Images");
    var path = Path.Combine(dir, id + ".jpg");
    return base.File(path, "image/jpeg");
}

您可以使用接受路径和mime类型的File重载。在你的控制器动作中:

// Sub the appropriate mime type for the image
return File(thePathFromTheDb, "image/jpg"); 

http://msdn.microsoft.com/en-us/library/dd492492 (v = vs.108) . aspx

如果你的图像数据来自数据库,在你的控制器动作:

byte[] bytes = GetImageBytesFromDatabase();  // Sub your code to get bytes
return File(bytes, "image/jpg"); // Sub the appropriate mime type for the image

http://msdn.microsoft.com/en-us/library/dd460208 (v = vs.108) . aspx

您需要链接图像以指向控制器。然后控制器需要返回一个具有正确mime类型的FileResult给浏览器。

顺序如下:

    浏览器请求页面
  1. 带有反向链接的服务器返回页面(例如<img src='/files/get/123.png'/>)
  2. 浏览器请求反向链接中的图像
  3. 服务器从
  4. 磁盘 DB读取图像,响应控制器(FilesController)动作调用(Get),返回类型为FileResult。请记住根据图像格式将mime类型设置为image'pnggifjpeg
  5. 服务器返回图像到浏览器