【问题标题】:How to display an image from a server side store in memory?如何显示来自服务器端存储在内存中的图像?
【发布时间】:2013-04-17 15:32:04
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案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】:

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

    【讨论】:

    • 服务器如何知道在哪里可以找到文件?请记住,图像在文件夹中,而不是保存在数据库中。
    • 嗯,我的错,我认为图像数据来自数据库。即将更新。
    • 那么,一旦获得文件路径,服务器就会返回给我图像?
    • 是的,如果您使用 Server.MapPath 适当地映射它。
    【解决方案3】:

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

    顺序如下:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-18
      • 2021-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-24
      • 2021-06-11
      相关资源
      最近更新 更多