【问题标题】:Google drive API downloading file nodejs谷歌驱动API下载文件nodejs
【发布时间】: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


    【解决方案1】:

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

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

    对于这个,这个答案怎么样?在这种情况下,请使用responseTypeRef

    模式一:

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

    示例脚本:

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

    模式 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);
        });
      }
    );
    

    参考:

    【讨论】:

    • 非常感谢,responseType: 'stream' 解决了这个问题。但正如您在developers.google.com/drive/api/v3/manage-downloads 看到的那样,文档显然是错误的。他们打算解决这个问题吗?
    • @Laurent Dhont 感谢您的回复。我很高兴你的问题得到了解决。关于Document的修改点,我报告了。但我不确定何时完成此修改。对此我深表歉意。
    猜你喜欢
    • 1970-01-01
    • 2016-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多