如何从内存中的服务器端存储显示图像?

时间:2013-04-17 15:32:04

标签: c# image-processing asp.net-mvc-4

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

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

3 个答案:

答案 0 :(得分:1)

您可以使用带有路径和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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

您需要链接图像以指向控制器。然后,控制器需要将具有正确mimetype的FileResult返回给浏览器。

序列如下:

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