gpt4 book ai didi

node.js - 无法使用node-oauth模块下载文件

转载 作者:太空宇宙 更新时间:2023-11-04 02:42:02 25 4
gpt4 key购买 nike

在 Node.js 中,我使用下面的代码从服务器下载文件。 API调用成功。我将“数据”以“二进制”编码保存到本地文件后,相应的软件无法打开本地文件。我比较了本地文件和服务器文件的文件大小。有细微差别。

我找不到我错在哪里。 OAuth库支持文件下载吗?

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');
});
}
);

最佳答案

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

此问题的原因是我们收到的是“utf8”编码的 http 正文。使用“二进制”编码可以修复它。

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

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

var consumer = new OAuth('',
null,
consumer_key, consumer_secret, '1.0',
null, 'HMAC-SHA1', 32, {encoding: "binary"});

解决方案:使用请求模块下载文件。代码如下。

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){..});

关于node.js - 无法使用node-oauth模块下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13838842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com