【问题标题】:Unable to get/download a file from Google Drive using the API无法使用 API 从 Google Drive 获取/下载文件
【发布时间】:2019-05-10 23:43:53
【问题描述】:

当我尝试获取文件时,我的请求通过了,但我最终得到了一个类型正确但已损坏的文件。

文件包含:

{
 "kind": "drive#file",
 "id": <ID of the File>,
 "name": <Name of the File>,
 "mimeType": <Type>
}

这与文件是图像文件还是文本文件无关。

function getFile(auth, file, path, call) {
  console.log(file)
  var dest = fs.createWriteStream(path + "/" + file.name);

  const drive = google.drive({version: 'v3', auth});
  drive.files.get({fileId: file.id, mimeType: 'image/jpeg'}, {responseType: "stream"},
    function(err, res) {
       res.data
       .on("end", () => {
          console.log("Done");
       })
       .on("error", err => {
          console.log("Error", err);
       })
       .pipe(dest);
    })
}

【问题讨论】:

    标签: node.js google-drive-api fs


    【解决方案1】:

    这个修改怎么样?

    发件人:

    drive.files.get({fileId: file.id, mimeType: 'image/jpeg'}, {responseType: "stream"},
    

    收件人:

    drive.files.get({fileId: file.id, alt: "media"}, {responseType: "stream"},
    

    注意:

    • Drive API 中的files.get 方法无法转换mimeType。
    • 如果您想通过转换mimeType来导出Google Docs(电子表格、文档、幻灯片),请将上面的脚本修改如下。

      drive.files.export({fileId: file.id, mimeType: 'image/jpeg'}, {responseType: "stream"},
      

    参考:

    如果我误解了您的问题并且这不是您想要的结果,我深表歉意。

    【讨论】:

    • 我刚试了一下,现在看来我的结果是无法识别的。我得到的错误是 {status: 403, statusText: 'Forbidden' }
    • @Ras。 M 谢谢回复。我带来的不便表示歉意。在我的环境中,我可以确认修改后的脚本有效。我为这种情况道歉。因此,为了正确理解您的问题,您能否提供完整的脚本来复制作为评论发布的当前问题?当然,请删除您的个人信息。如果可以,请将其添加到您的问题中。由此,我想确认一下这个问题。如果您能合作解决您的问题,我很高兴。
    • @Ras。 M 还有两个问题。 1.你想下载什么mimeType的原文件? 2. 您是该文件的所有者,并且该文件已放在您的云端硬盘中吗?
    猜你喜欢
    • 2015-05-30
    • 2023-02-06
    • 2022-01-03
    • 2021-07-15
    • 2021-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多