我正在检索从mongoDB以二进制形式存储的图像。并将其作为json发送到jquery ajax。但是来自node.js的console.log显示它很好但是当请求回到jquery时ajax什么都没发生,看不到图像。并且图像也保存在DBFF类型BUFFER中。下面是代码
jquery ajax代码
$.ajax({
url: config.ipaddress+'/getCompanyImage',
contentType: 'image/png',
type: 'GET',
success: function(data, textStatus, jqXHR) {
$.each(data, function(index, result) {
alert('image result ' + result);
$("#headerCompanyImage").attr("src", result);
});
},
error: function (jqXHR, textStatus, errorThrown)
{
}
});
node.js代码
exports.getCompanyImage = function(req,res) {
var_company.find({_id : req.session.company},function(err,company){
company.forEach(function(companyLoop){
console.log(companyLoop.company_image.contentType);
console.log(companyLoop.company_image.data);
res.contentType(companyLoop.company_image.contentType);
res.json(companyLoop.company_image.data);
})
});
}
答案 0 :(得分:5)
我有解决方案。它必须是二进制形式,然后将其转换为String('base64')然后发送响应。现在它正在运作
var img = new Buffer(companyLoop.company_image.data, 'binary').toString('base64');
res.contentType(companyLoop.company_image.contentType);
res.send(img);
并且在jquery中它将是
$("#headerCompanyImage").attr("src", "data:image/png;base64," + data);