使用节点js需要从Facebook下载图像

时间:2015-04-10 04:12:15

标签: node.js request

我的要求是从facebook读取和存储简单的图像资源。 图片网址:https://badge.facebook.com/badge/1.png

以下是代码段(我曾经从谷歌中读取图片)根据我的要求不能正常工作它只是在我的本地磁盘中存储无效图像

var fs = require('fs'),
    request = require('request');

var download = function(uri, filename, callback){

  request.get(uri, function(err, res, body){

    console.log('content-type:', res.headers['content-type']);
    console.log('content-length:', res.headers['content-length']);

    var r = request(uri).pipe(fs.createWriteStream(filename));
    r.on('close', callback);
    r.on('error', function(err) {console.log(err)})
  });
};

download('https://badge.facebook.com/badge/1.png', 'google.png', function(){
    console.log('Done downloading..');
  });
请帮帮我......

1 个答案:

答案 0 :(得分:1)

这不是nodejs或请求的问题,而是facebook。

您可以使用文本编辑器打开google.png,这是一个html文件。

所以也许facebook有一些反爬虫防火墙。

只需设置标题,例如:

var fs = require('fs'),
request = require('request');

var download = function(uri, filename, callback){

  var r = request({
    url: uri,
    headers: {
      'accept': 'image/*',
      'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36',
    }
  }).pipe(fs.createWriteStream(filename));
  r.on('error', function(err) {console.log(err)})
  r.on('close', callback);
};

download('https://badge.facebook.com/badge/1.png', 'google.png', function(){
  console.log('Done downloading..');
});