node.js - request得到的数据如何保存成Buffer?
ringa_lee
ringa_lee 2017-04-17 13:52:45
[Node.js讨论组]
request('http://xxx/ab.jpg', function (error, response, body) {

    if (!error && response.statusCode == 200) {
        var buffer = new Buffer(body);
        }
})
    

这样写是不行的
请问应该怎样去写呢?

ringa_lee
ringa_lee

ringa_lee

全部回复(2)
阿神

看你写的是要讲图片Buffer出来。下面举例做一个示例:

比如要请求我的头像地址:https://sfault-avatar.b0.upaiyun.com/453/230/453230058-573ffdd5eef2b_huge256

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

var url = "https://sfault-avatar.b0.upaiyun.com/453/230/453230058-573ffdd5eef2b_huge256";
var options = { 
    url: url,
    encoding: null
};
request(options, function(error, response, buffer) {
    if (error) {
    }
    
    console.log(typeof(buffer));

    fs.writeFile('avatar.png', buffer, function(err) {
        if (err) {
        }
    }); 
});

你目前遇到的问题,主要是返回的是一个String类型的字符串,采用了默认编码格式UTF-8。在request的 官网介绍 中,指出request(options, callback)部分中的options设置的encoding

encoding - Encoding to be used on setEncoding of response data. If null, the body is returned as a Buffer. Anything else (including the default value of undefined) will be passed as the encoding parameter to toString() (meaning this is effectively utf8 by default). (Note: if you expect binary data, you should set encoding: null.)

因此,你将encoding设置为null后,request会直接返回Buffer类型的,即:

var options = { 
    url: url,
    encoding: null
};

希望以上可以帮到你。

迷茫
buffer.write(string, [offset], [length], [encoding])
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号