Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用node.js下载并保存favicon?_Node.js - Fatal编程技术网

使用node.js下载并保存favicon?

使用node.js下载并保存favicon?,node.js,Node.js,我正在尝试使用Node.js从网站下载favicon,但遇到了一些问题 我的代码如下: //Imports ... var theurl = http.createClient(80, 'a1.twimg.com'); var requestUrl = 'http://a1.twimg.com/a/1284159889/images/favicon.ico'; var request = theurl.request('GET', requestUrl, {"host": "a1.twimg.

我正在尝试使用Node.js从网站下载favicon,但遇到了一些问题

我的代码如下:

//Imports ...

var theurl = http.createClient(80, 'a1.twimg.com');
var requestUrl = 'http://a1.twimg.com/a/1284159889/images/favicon.ico';
var request = theurl.request('GET', requestUrl, {"host": "a1.twimg.com"});
request.end();

request.addListener('response', function (response)
{
        var body = '';
        response.addListener('data', function (chunk) {
                body += chunk;
        });
        response.addListener("end", function() {
            fs.writeFileSync('favicon.ico', body.toString('binary'), 'binary');
        });
});

然而,得到的图标只是垃圾,当我以这种方式抓取它时,我怀疑它与favicon的编码有关。这样做的正确方法是什么?

尝试作为响应回调的第一行
response.setEncoding('binary')
,或者(因为这不是首选的(按节点)设置的编码)
response.setEncoding(null)
,这将使它成为一个缓冲区。然后直接写正文,不在上面执行任何操作


fs.writeFileSync('favicon.ico',body',binary')

我必须执行
response.setEncoding(“binary”)
并为writeFileSync提供第三个参数:

fs.writeFileSync('favicon.ico', body, 'binary')

这种组合对我很有效。谢谢。

不使用response.setEncoding(null),但使用response.setEncoding(“二进制”)。@jimt-您是否也尝试过使用
null
,然后跳过写入中的第三个参数?所以它是
fs.wFS('favicon',body)