node.js - 无法使用 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);
})
}
解决方案
这个改装怎么样?
从:
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"},
参考:
如果我误解了您的问题并且这不是您想要的结果,我深表歉意。
推荐阅读
- node.js - 在 Weblogic 中部署 Node JS 应用程序
- wordpress - 如何修复 401 Unauthorized response WP Rest API
- java - 在 spring-boot 控制器中标记为 final 的服务实例的问题?
- c++ - 当我使用 cin 输入错误的变量类型时会发生什么?
- laravel - 如何更新 laravel eloquent where 子句?
- tws - reqAllOpenOrders() 无法下载我帐户的数据
- powershell-2.0 - 执行后删除文件夹和脚本
- azure - Azure Log Analytics 未收集日志
- python - Django:具有通用视图的 reverse_lazy()
- android - 安卓短信验证API