【发布时间】:2020-06-19 18:24:48
【问题描述】:
我正在尝试使用 node.js 中的 google drive API v3 获取文件的内容。
我在本文档中读到,我从drive.files.get({fileId, alt: 'media'}) 得到了一个流,但事实并非如此。我得到了回报。
https://developers.google.com/drive/api/v3/manage-downloads
谁能告诉我如何从该方法中获取流?
【问题讨论】:
我正在尝试使用 node.js 中的 google drive API v3 获取文件的内容。
我在本文档中读到,我从drive.files.get({fileId, alt: 'media'}) 得到了一个流,但事实并非如此。我得到了回报。
https://developers.google.com/drive/api/v3/manage-downloads
谁能告诉我如何从该方法中获取流?
【问题讨论】:
我相信你的目标和情况如下。
drive.files.get的方法中检索蒸汽类型。对于这个,这个答案怎么样?在这种情况下,请使用responseType。 Ref
在此模式中,文件作为流类型下载并保存为文件。
var dest = fs.createWriteStream("###"); // Please set the filename of the saved file.
drive.files.get(
{fileId: id, alt: "media"},
{responseType: "stream"},
(err, {data}) => {
if (err) {
console.log(err);
return;
}
data
.on("end", () => console.log("Done."))
.on("error", (err) => {
console.log(err);
return process.exit();
})
.pipe(dest);
}
);
在此模式中,文件作为流类型下载并放入缓冲区。
drive.files.get(
{fileId: id, alt: "media",},
{responseType: "stream"},
(err, { data }) => {
if (err) {
console.log(err);
return;
}
let buf = [];
data.on("data", (e) => buf.push(e));
data.on("end", () => {
const buffer = Buffer.concat(buf);
console.log(buffer);
});
}
);
【讨论】: