首页 > 解决方案 > 无法使用 API 从 Google Drive 获取/下载文件

问题描述

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

该文件包含:

{
 "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.jsgoogle-drive-apifs

解决方案


这个改装怎么样?

从:

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"},
    

参考:

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


推荐阅读