2015-02-10 5 views
12

сервер My Node.js есть что-то, что выглядит следующим образом:Рендеринг Base64 PNG с Экспресс

app.get("/api/id/:w", function(req, res) { 
    var data = getIcon(req.params.w); 
}); 

Здесь data является строка, содержащая представление Base64 в виде PNG изображения. Есть ли способ отправить это клиенту, который получает доступ к маршруту, закодированному и отображаемому в виде изображения (например, чтобы URL-адрес мог использоваться в теге img)?

+0

Какой вид изображения это? Чтобы отправить его клиенту, вам нужно знать, какой тип содержимого изображения (JPEG, PNG, GIF, ICO)? – loganfsmyth

+0

Это PNG; Я отредактировал свой вопрос, чтобы упомянуть об этом. – Hydrothermal

ответ

23

Да, вы можете кодировать строку base64 и вернуть его клиенту как образ:

server.get("/api/id/:w", function(req, res) { 
    var data = getIcon(req.params.w); 
    var img = new Buffer(data, 'base64'); 

    res.writeHead(200, { 
    'Content-Type': 'image/png', 
    'Content-Length': img.length 
    }); 
    res.end(img); 
}); 
+1

'var img = new Buffer (data, 'base64');' – lujcon

+0

Это именно то, что мне нужно! Я заменил 'data.buffer'' data' в соответствии с комментарием @ lujcon, и он отлично работает. – Hydrothermal