gpt4 book ai didi

java - 谷歌驱动器 API : Downloading a file in Java

转载 作者:行者123 更新时间:2023-11-29 05:03:09 25 4
gpt4 key购买 nike

因此,我尝试使用 Google Drive 的 API 从我的云端硬盘帐户下载一个文件。我遵循了 Google 的快速入门指南 (https://developers.google.com/drive/web/quickstart/java) 并使用了 Google 的 DriveQuickStart.java 来初始化 Drive 对象。

对象的一切都正常工作(即从我的谷歌驱动器帐户获取所有文件并显示它们的 ID 和标题);但是,当我尝试通过 Google 开发的函数的输入流下载文件时,我不断收到空异常错误。

这是我使用的代码:

 private static InputStream downloadFile(Drive service, File file) {
if (file.getDownloadUrl() != null && file.getDownloadUrl().length() > 0) {
try {
HttpResponse resp =
service.getRequestFactory().buildGetRequest(new GenericUrl(file.getDownloadUrl()))
.execute();
return resp.getContent();
} catch (IOException e) {
// An error occurred.
e.printStackTrace();
return null;
}
} else {
// The file doesn't have any content stored on Drive.
return null;
}
}

问题是当方法调用 file.getDownloadURL() 时,它返回一个空值。根据文档,如果我尝试下载的文件是原生的 Google Drive 文件,它应该返回一个空值;但是,我正在下载的文件只是一个 jar 文件,所以不可能是因为文件扩展名(我也尝试过其他格式)。

为什么它返回一个空值,我该怎么做才能解决这个问题?谢谢!

最佳答案

想通了。

对于遇到过这个问题的其他人来说,答案非常简单:在DriveQuickStart.java代码中,注意这部分:

    /** Global instance of the scopes required by this quickstart. */
private static final List<String> SCOPES =
Arrays.asList(DriveScopes.DRIVE_METADATA_READONLY);

并确保将其设置为:

    /** Global instance of the scopes required by this quickstart. */
private static final List<String> SCOPES =
Arrays.asList(DriveScopes.DRIVE);

所以它不起作用的唯一原因是因为程序没有适当的权限来这样做。

关于java - 谷歌驱动器 API : Downloading a file in Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31374233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com