使用curl和node.js下载图像并将其转换为base64

使用curl和node.js下载图像并将其转换为base64,node.js,curl,express,base64,Node.js,Curl,Express,Base64,我需要从外部服务器下载一个映像,并将其动态推送到我的客户端 外部服务器正在使用SSL和基本身份验证。在花了几个小时尝试使用'request'和'restler'模块之后,我放弃了,选择了'curlrequest'模块,它工作得很好 我的问题是curl下载的二进制图像数据不能转换为可读的base64图像。我想可能有一些卷曲旗我错过了,但不确定。感谢您的帮助 var curl = require('curlrequest'); exports.slideImageData = function (

我需要从外部服务器下载一个映像,并将其动态推送到我的客户端

外部服务器正在使用SSL和基本身份验证。在花了几个小时尝试使用'request'和'restler'模块之后,我放弃了,选择了'curlrequest'模块,它工作得很好

我的问题是curl下载的二进制图像数据不能转换为可读的base64图像。我想可能有一些卷曲旗我错过了,但不确定。感谢您的帮助

var curl = require('curlrequest');

exports.slideImageData = function (req, res){
  var id = req.params.id;
  var prefix = "data:image/png;base64, ";
  var options = {
    url: config.jive.domain + 'api/core/v3/people/' + id + '/images/1/data'
    , user: config.jive.user + ':' + config.jive.pass
  };
  curl.request(options, function (err, result){
    if (err){
      console.log(err)
    } else{
      var base64Image = new Buffer(result, 'binary').toString('base64');
      base64Image = prefix + base64Image;
      res.send('<img src="' + base64Image + '"/>');
    }
  });
}
var curl=require('curlrequest');
exports.slideImageData=函数(请求、恢复){
var id=请求参数id;
var prefix=“数据:图像/png;base64”;
变量选项={
url:config.jive.domain+'api/core/v3/people/'+id+'/images/1/data'
,user:config.jive.user+':'+config.jive.pass
};
请求(选项、函数(错误、结果){
如果(错误){
console.log(错误)
}否则{
var base64Image=新缓冲区(结果为'binary')。toString('base64');
base64Image=前缀+base64Image;
res.send(“”);
}
});
}
要添加更多上下文,下面是客户机中图像的外观。base64编码故意用省略号截断

<img src="data:image/png;base64, /VBORw0KGgoAAAANSUh ... AAAABJRU5E/UJg/Q==">

试试:


这就是将数据作为缓冲区而不是字符串返回给您所需要的。显示如何使用请求执行此操作。

正确答案,这是dankohn响应的变体

var curl = require('curlrequest');

exports.slideImageData = function (req, res){
  var id = req.params.id;
  var prefix = "data:image/png;base64, ";
  var options = {
    url: config.jive.domain + 'api/core/v3/people/' + id + '/images/1/data'
    , user: config.jive.user + ':' + config.jive.pass
    , encoding: null
  };
  curl.request(options, function (err, result){
      var base64Image = new Buffer(result, 'binary').toString('base64');
      base64Image = prefix + base64Image;
      res.send('<img src="' + base64Image + '"/>');
  });
}
var curl=require('curlrequest');
exports.slideImageData=函数(请求、恢复){
var id=请求参数id;
var prefix=“数据:图像/png;base64”;
变量选项={
url:config.jive.domain+'api/core/v3/people/'+id+'/images/1/data'
,user:config.jive.user+':'+config.jive.pass
,编码:空
};
请求(选项、函数(错误、结果){
var base64Image=新缓冲区(结果为'binary')。toString('base64');
base64Image=前缀+base64Image;
res.send(“”);
});
}

尝试使用RAW时,出现错误:初始化失败。另外,当我尝试使用encoding:null时,我得到了错误:Unknown encoding:[object]。尝试使用他们的RAW示例,该示例的语法略有不同:
var curl = require('curlrequest');

exports.slideImageData = function (req, res){
  var id = req.params.id;
  var prefix = "data:image/png;base64, ";
  var options = {
    url: config.jive.domain + 'api/core/v3/people/' + id + '/images/1/data'
    , user: config.jive.user + ':' + config.jive.pass
    , encoding: null
  };
  curl.request(options, function (err, result){
      var base64Image = new Buffer(result, 'binary').toString('base64');
      base64Image = prefix + base64Image;
      res.send('<img src="' + base64Image + '"/>');
  });
}