繁体   English   中英

java google drive API 无法下载二进制文件

[英]java google drive API unable to download binary file

我有工作代码来列出我的 Google Drive 文件夹中包含二进制文件的文件,但我在尝试下载时遇到错误:

GET https://www.googleapis.com/download/drive/v3/files/1udFizffA_0M4jSUBJbDI6uNVdPVhdymW?alt=media
{
  "code" : 403,
  "errors" : [ {
    "domain" : "global",
    "location" : "alt",
    "locationType" : "parameter",
    "message" : "Only files with binary content can be downloaded. Use Export with Docs Editors files.",
    "reason" : "fileNotDownloadable"
  } ],
  "message" : "Only files with binary content can be downloaded. Use Export with Docs Editors files."
}

相关代码如下:

Drive.Files f = driveService.files();
HttpResponse httpResponse = null;
Drive.Files.Get get = f.get(file.getId());
httpResponse = get.executeMedia();

我还尝试使用以下方式导出:

httpResponse = f.export(file.getId(),"application/octet-stream").executeMedia();

这也没有用。

有人可以帮我弄清楚我错过了什么吗?

file.get方法确实返回文件数据,但仅适用于二进制文件类型。 这就是此错误消息告诉您的内容。

只能下载包含二进制内容的文件。 使用 Export with Docs Editors 文件。

String fileId = "0BwwA4oUTeiV1UVNwOHItT0xfa2M";
OutputStream outputStream = new ByteArrayOutputStream();
driveService.files().get(fileId)
    .executeMediaAndDownloadTo(outputStream);

所有其他文件类型是谷歌文档、谷歌表格。 查看此页面了解更多信息: mimetype

需要从 google mime 类型导出为标准 mime 类型。 如果您查看manage-downloads#java页面,您将找到有关如何使用此方法的文档示例。

String fileId = "1ZdR3L3qP4Bkq8noWLJHSr_iBau0DNT4Kli4SxNc2YEo";
OutputStream outputStream = new ByteArrayOutputStream();
driveService.files().export(fileId, "application/pdf")
    .executeMediaAndDownloadTo(outputStream);

此方法的技巧是确保您设置正确的mimetype

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM