使用node.js存储图像会导致错误

时间:2016-06-29 12:16:10

标签: javascript node.js image file mediawiki

我正在尝试从 wikimedia 获取图片,图片的链接是

upload.wikimedia.org/wikipedia/commons/thumb/e/e3/AybükeArslan_(3).JPG/220px-AybükeArslan_(3).JPG

但是当我尝试使用 node.js 来获取图片时,维基媒体服务器会将错误声明作为回复。但是在浏览器上,URL工作正常,并将图像作为响应。

这是错误陈述

  

400错误请求服务器因此无法满足请求   是畸形的还是其他不正确的。无法解码请求

代码是

var http = require('https')
  , fs = require('fs')
  , options

options = {
    host: 'upload.wikimedia.org'
  , port: 443
  , path: '/wikipedia/commons/thumb/e/e3/AybükeArslan_(3).JPG/220px-AybükeArslan_(3).JPG'
}


var request = http.get(options, function(res){
    var imagedata = ''
    res.setEncoding('binary')

    res.on('data', function(chunk){
        imagedata += chunk
    })

    res.on('end', function(){
       console.log(imagedata);
    })

    //trying to store the response as a jpg image which i am failing miserably because the response is a error statement rather than image stream. 
    res.on('end', function(){
        fs.writeFile('image.jpg', imagedata, 'binary', function(err){
            if (err) throw err
            console.log('File saved.')
        })
    })

})

有人可以帮忙吗?坚持了很久。

2 个答案:

答案 0 :(得分:0)

因为你在url中有未编码的字符串。使用encodeURI

<强>已更新

var http = require('https')
  , fs = require('fs')
  , options;

options = {
    hostname: 'upload.wikimedia.org'
  , port: 443
  , path: encodeURI('/wikipedia/commons/thumb/e/e3/AybükeArslan_(3).JPG/220px-AybükeArslan_(3).JPG')
};

var request = http.get(options, function(res){
    var imagedata = '';
    res.setEncoding('binary');

    res.on('data', function(chunk){
        imagedata += chunk
    });

    res.on('end', function(){
       console.log(imagedata);
    });

    //trying to store the response as a jpg image which i am failing miserably because the response is a error statement rather than image stream. 
    res.on('end', function(){
        fs.writeFile('image.jpg', imagedata, 'binary', function(err){
            if (err) throw err;
            console.log('File saved.');
        });
    })
});

答案 1 :(得分:0)

我问了一个单独的问题来找到答案,隐藏字符存在一些问题,这些问题在崇高中是不可见的,这会导致错误,在问题中我提到的代码是完全正确的,有关详细信息,请参阅下面的答案< / p>

String has hidden characters, Can't able to verify ,