How to request images and output image in Node.js

express, javascript, node.js, request

Solution

Try specifying `encoding: null` when making the request so that the response body is a `Buffer` that you can directly write to the response stream:

app.get("/google/logo", function(req, res) {
    var requestSettings = {
        url: 'https://www.google.com/images/srpr/logo11w.png',
        method: 'GET',
        encoding: null
    };

    request(requestSettings, function(error, response, body) {
        res.set('Content-Type', 'image/png');
        res.send(body);
    });
});

On the other hand if you do not specify `encoding: null`, the `body` parameter will be a String instead of a Buffer.

Problem

I try to get the image and display on a url. and I use request module. For example, I want to get the image `https://www.google.com/images/srpr/logo11w.png`, and display on my url `http://example.com/google/logo`. Or display by `<img src="http://example.com/google/logo" />`. And I try to use request and express: ``` app.get("/google/logo", function(req, res) { request.get("https://www.google.com/images/srpr/logo11w.png", function(err, result, body) { res.writeHead(200, {"Content-Type": "image/png"}); res.write(body); res.end(); }) }) ``` but the response is not a image. How to get image and output? Please give me some suggestion about the question. THANKS.

Original source