fs.readfile图片二进制结果=远程图片得到相同结果
发布于 11 年前 作者 shaniu00 7739 次浏览 最后一次编辑是 8 年前

大家都知道 fs.readFile可以读取远程图片获的二进制结果
现在有个需求 想获取远程图片 该怎么办 我不想把图片下载到本地 然后再用fs.readFile去读 增大了开销 有木有办法

2 回复
var http = require('http');

/**
 * 读取远程文件
 *
 * @param {String} url
 * @param {Function} cb
 * - {Error} err
 * - {Buffer} buf
 */
function readRemoteFile (url, cb) {
  var callback = function () {
    // 回调函数,避免重复调用
    callback = function () {};
    cb.apply(null, arguments);
  };

  var req = http.get(url, function (res) {
    var b = [];
    res.on('data', function (c) {
      b.push(c);
    });
    res.on('end', function () {
      callback(null, Buffer.concat(b));
    });
    res.on('error', callback);
  });
  req.on('error', callback);
}

readRemoteFile('http://www.baidu.com/img/bdlogo.gif', function (err, buffer) {
  if (err) throw err;
  console.log(buffer.length, buffer);
});

输出2进制不可以么,就像验证码一样

回到顶部