代码之家  ›  专栏  ›  技术社区  ›  user3668129

为什么不显示图像?

  •  0
  • user3668129  · 技术社区  · 7 年前

    我正在尝试从中获取图像(jpg文件) node.js 并在html标记中显示它( img ),但未显示图片(如您所见:)。

    处理请求的My node.js看起来:

    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({extended : true}));
    
    app.get('/pictureItem', function (req, res) {
    
        // imagesNames[0].name - contains the name of the image to send (jpg file)
        res.sendFile('/images/' + imagesNames[0].name, {root: __dirname })  
    })
    

    $.get("/pictureItem", function(data, status) 
                     {
                         console.log("got image");
                         $("#imageId").attr("src", data);                    
                     })     
    

    我错过了什么?

    enter image description here

    2 回复  |  直到 7 年前
        1
  •  1
  •   jfriend00    7 年前

    你的 '/pictureItem'

    客户端代码中的ajax调用似乎希望返回URL,而不是图像:

    $.get("/pictureItem", function(data, status) {
         console.log("got image");
         $("#imageId").attr("src", data);                    
    });
    

    1. 设置 $("#imageId").attr("src", data);
    2. 这将导致浏览器随后从服务器请求该URL。
    3. 当您的服务器收到该映像请求时,它将返回该映像。
    4. 浏览器将显示从服务器返回的图像。

    $("#imageId").attr("src", "/pictureItem");
    

    然后,当浏览器从服务器请求图像时,现有服务器路由将返回所需图像 /pictureItem 路线。

        2
  •  -1
  •   Baklap4    7 年前

    您是否为静态文件定义了中间件?如果是,您可以定义 GET 方法,该方法检索特定图像的路径并返回该路径,以便将其附加到 src

    你的 pictureItem 端点是返回图像文件本身。而您的src属性需要一个字符串,因此它可以获取图像本身。

    server.js

    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({extended : true}));
    app.use('/images', express.static(__dirname + '/Images'));
    app.get('/pictureItem', function (req, res) {
        // returns a string as '/images/someimagename.jpg'.
        res.send('/images/'+imageNames[0].name);
    });
    

    someJavascript.js

    $.get("/pictureItem", function(data, status) 
    {
        console.log("Found image on url: " + data);
        $("#imageId").attr("src", data);                    
    });