gpt4 book ai didi

node.js - 通过管道将数据传输至字符串 Google Node API

转载 作者:太空宇宙 更新时间:2023-11-03 23:28:55 25 4
gpt4 key购买 nike

我正在使用 Google API Node 客户端从我的 Google 云端硬盘下载 pdf,但我不知道如何访问从 service.files.get 函数传入的数据。我的代码如下:

function download(auth, fileId) {
var service = google.drive('v3');
var dest = fs.createWriteStream('something.pdf');

service.files.get({
auth: auth,
fileId: fileId,
alt: 'media'
})
.on('data', function(chunk){
console.log(chunk.toString()); // this gives me a JSON response of my bearer token, and not the pdf data
})
.on('end', function () {
console.log('Done');
})
.on('error', function (err) {
console.log('Error during download', err);
})
.pipe(dest);
}

我正在使用此下载通过电子邮件发送附件。我不想通过 dest 变量将文件保存到磁盘,而是希望从 download 函数返回一个 base64 编码的字符串,但我无法访问来自 API 请求的传入数据。谁能指出我访问此内容的正确目的地?

如果我按原样运行代码,文件下载效果很好,但我无法弄清楚 .pdf 数据从何处流入或如何访问其“数据”事件。

最佳答案

尝试将响应主体的 block 累积到闭包中的变量中。您可以在“结束”事件回调中访问完整的累积数据。我还提供了一个通过提供给下载函数的回调从异步函数返回字符串的示例。请注意,您可以使用 Promise/async/etc 来完成此操作。 “Stream Consumers”的 Node.js“Stream”文档特别相关 ( https://nodejs.org/docs/latest-v5.x/api/stream.html#stream_api_for_stream_consumers )。

function download(auth, fileId, doneCb) {
var respData = '';
var service = google.drive('v3');

service.files.get({
auth: auth,
fileId: fileId,
alt: 'media'
})
.on('data', function(chunk) {
respData += chunk;
})
.on('end', function () {
// respData should contain all of the data now
doneCb(respData);
})
.on('error', function (err) {
console.log('Error during download', err);
});
}

关于node.js - 通过管道将数据传输至字符串 Google Node API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40519651/

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