我正在开发一个使用ExpressJS作为Web服务器的Node.JS应用程序。
我想设置一个路由/get/thumbnail/by_guid/:guid
,它将返回一个真实的图像,而不是base64字符串,这样我就可以使用<img src="/get/thumbnail/by_guid/ABCD" >
设置图像标签的源,实际图像将显示出来。
我将缩略图存储为数据库中的BLOB,并检索它们。当我检索它们时,它们在我的node应用程序中变成了缓冲区。然后,我将那些缓冲区作为下面所示的路由发送,其中img
是包含图像的缓冲区对象。
router.get('/get/thumbnail/by_guid/:guid', function(req, res){
image_helper.guidToImage(req.params.guid).then(function(img){
res.set('Content-Type', 'image/jpeg');
res.set('Content-Length', img.length);
res.end(img, 'latin1');
}, function(err){
res.err(err);
});
});
guidToImage
返回图像的缓冲区。
当我访问一个缩略图的URL,例如/get/thumbnail/by_guid/ABCD
时,我看到一个白色的框,如下所示:
当我查看chrome dev工具的网络选项卡时,请求如下:
响应只显示了我的base64字符串:
并且当我引用它时,图像显示为损坏状态:
我该如何实现我正在尝试的操作?
我已经花了6个小时来解决这个问题。
感谢您的帮助。
<img src="/get/thumbnail/by_guid/ABCD" >
- user2172205src="data:image/png;base64,[您的base64代码]...
- Jorgatob
怎么样? - Philres.end(img, 'binary');
- Vinay