首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用node-oauth模块下载文件失败

使用node-oauth模块下载文件失败
EN

Stack Overflow用户
提问于 2012-12-12 19:34:06
回答 1查看 206关注 0票数 1

在Node.js中,我使用下面的代码从服务器下载文件。API调用成功。在我用‘二进制’编码将'data‘保存到本地文件后,本地文件不能被相应的软件打开。我比较了本地文件和服务器文件的文件大小。这里有一个很小的区别。

我找不到我哪里错了。OAuth库是否支持文件下载?

代码语言:javascript
运行
复制
var OAuth = require('oauth').OAuth;

var consumer = new OAuth('',
            null,
            consumer_key, consumer_key_secret, '1.0',
            null, 'HMAC-SHA1');

consumer.get(url
        , oauth_token, ooauth_token_secret
        , function (err, data, response){
            var filename = path.join(__dirname, "test.dwg");
            var file = fs.createWriteStream(filename);

            console.log('Data length: ' + data.length);

            file.write(data, 'binary', function(err){                       
                console.log('Complete');
            });             
        }       
    );
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-19 14:35:13

经过一些测试,我得到了解决方案。

此问题的原因是我们正在接收'utf8‘编码的http正文。使用‘二进制’编码可以修复它。

oauth模块只有在获取响应时才支持utf8编码。这是文件"oatuh\lib\oauth.js“中”第# 375行,response.setEncoding('utf8');“中的硬代码。

即使我将编码设置为下面的代码。它还是不能工作。所以这个模块不能用来下载二进制文件。

代码语言:javascript
运行
复制
var consumer = new OAuth('',
            null,
            consumer_key, consumer_secret, '1.0',
            null, 'HMAC-SHA1', 32, {encoding: "binary"});

Solution:使用request模块下载文件。代码如下所示。

代码语言:javascript
运行
复制
var oauth = {
    consumer_key: consumer_key
    , consumer_secret: consumer_secret
    , token: token
    , token_secret: token_secret
};
request.get({url:url, oauth:oauth, encoding: "binary"}, function(err, res, body){..});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13838842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档