gpt4 book ai didi

javascript - Node.js - 通过请求从 Google Drive 下载文件

转载 作者:行者123 更新时间:2023-11-30 08:02:28 24 4
gpt4 key购买 nike

我正在尝试使用 Node.js 和 Request 模块从 Google 云端硬盘下载文件。我从项目元数据的 webContentLink 区域获取下载链接,这些链接在我的浏览器中有效。

我的请求是这样的:

request.get({uri:item.webContentLink,headers:{authorization:'Bearer'+token}}).pipe(response);

我的回复是:

stream.js:79
dest.end();
^
TypeError: Object #<IncomingMessage> has no method 'end'
at Request.onend (stream.js:79:10)
at Request.EventEmitter.emit (events.js:117:20)

我正在使用我在这里找到的方法 https://github.com/google/google-api-nodejs-client/issues/150

如有任何帮助,我们将不胜感激。

**编辑完整代码

var request = require('request');

//getting children of folder
var url = "https://www.googleapis.com/drive/v2/files/"+id+"/children?maxResults=1000&q=trashed%3Dfalse&access_token="+token;;

request.get(url, function(err,response,body){

detailsParse = JSON.parse(body);
//if children are .mp3 then download

if(detailsParse.mimeType == 'audio/mpeg'){
var file = fs.createWriteStream("./"+detailsParse.title);

var getDown = "https://www.googleapis.com/drive/v2/files/"+detailsParse.id+"?access_token="+token;
request.get(getDown, function(err,response,body){
if(err){console.log(err)}

var downParse = JSON.parse(body);
request.get({uri:downParse.webContentLink,headers:{authorization:'Bearer'+token}}).pipe(response);
}


})

最佳答案

好吧,这有几个部分是错误的。首先,@fmodos 将结果传递给"file"我之前创建的流是正确的。

但是这并没有完全解决问题,因为我遇到了身份验证问题和未使用正确端点的问题,所以完整的答案在下面

var request = require('request');

//getting children of folder
var url = "https://www.googleapis.com/drive/v2/files/"+id+"/children?maxResults=1000&q=trashed%3Dfalse&access_token="+token;

request.get(url, function(err,response,body){

detailsParse = JSON.parse(body);
//if children are .mp3 then download

if(detailsParse.mimeType == 'audio/mpeg'){
var file = fs.createWriteStream("./"+detailsParse.title);

var getDown = "https://www.googleapis.com/drive/v2/files/"+detailsParse.id+"?access_token="+token;
request.get(getDown, function(err,response,body){
if(err){console.log(err)}

var downParse = JSON.parse(body);
//****THIS NEEDS TO BE THE downloadUrl ENDPOINT AND NOT THE webContentLink endpoint

//*****NOTICE THE SPACE AFTER Bearer WAS MISSING BEFORE
request.get({uri:downParse.downloadUrl,headers:{authorization:'Bearer '+token}}).pipe(response);
});
}


});

关于javascript - Node.js - 通过请求从 Google Drive 下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24560953/

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