2

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

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

4

3 回答 3

1

您可以使用File采用路径和 mime 类型的重载。在您的控制器操作中:

// 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

于 2013-04-17T15:34:37.673 回答
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");
}
于 2013-04-17T15:35:49.783 回答
0

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

顺序如下:

  1. 浏览器请求页面
  2. 带有反向链接的服务器返回页面(例如<img src='/files/get/123.png'/>
  3. 浏览器在反向链接中请求图像
  4. 服务器从中读取图像磁盘DB 以返回类型响应控制器 ( FilesController) 操作调用 ( Get) 。请记住根据您的图像格式FileResult将 mime 类型设置为image\pngorgif或。jpeg
  5. 服务器将图像返回给浏览器
于 2013-04-17T15:35:46.523 回答