设置从jquery ajax中的node.js作为二进制数据发送的图像

时间:2014-01-08 06:49:00

标签: javascript jquery ajax node.js mongodb

我正在检索从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);
    })

  });
}

1 个答案:

答案 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);