Google Drive API下载文件nodejs

Lau*_*ont 2 node.js google-drive-api

我正在尝试使用node.js 中的Google Drive API v3 获取文件的内容。我在本文档中读到,我从中得到了一个流,drive.files.get({fileId, alt: 'media'})但事实并非如此。我得到了回报。

https://developers.google.com/drive/api/v3/manage-downloads

有人可以告诉我如何从该方法中获取流吗?

Tan*_*ike 8

我相信你的目标和情况如下。

  • 您想要从 的方法检索蒸汽类型drive.files.get
  • 您希望使用 googleapis 和 Node.js 来实现此目的。
  • 您已经完成了使用 Drive API 的授权过程。

为此,这个答案怎么样?在这种情况下,请使用responseType. 参考号

模式一:

在此模式中,文件作为流类型下载并保存为文件。

示例脚本:

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);
  }
);
Run Code Online (Sandbox Code Playgroud)

模式2:

在此模式中,文件作为流类型下载并放入缓冲区。

示例脚本:

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);
    });
  }
);
Run Code Online (Sandbox Code Playgroud)

参考: