我正在努力使用GoogleDrive API下载文件。我只是在写代码,应该把文件从我的驱动器下载到我的电脑上。我终于到了一个阶段,在这个阶段我可以通过身份验证并查看文件元数据。由于某种原因,我仍然无法下载文件。我得到的下载URL如下所示:
https://doc-04-as-docs.googleusercontent.com/docs/securesc/XXXXXXXXXXXXXX/0B4dSSlLzQCbOXzAxNGxuRUhVNEE?e=download
当我运行代码或复制并粘贴到浏览器中时,此URl不会下载任何内容。但是,在浏览器中,当我删除“
我的下载方法是直接出谷歌驱动器API留档:
public static InputStream downloadFile(Drive service, File file) {
if (file.getDownloadUrl() != null && file.getDownloadUrl().length() > 0) {
try {
System.out.println("Downloading: "+ file.getTitle());
return service.files().get(file.getId()).executeMediaAsInputStream();
} catch (IOException e) {
// An error occurred.
e.printStackTrace();
return null;
}
} else {
// The file doesn't have any content stored on Drive.
return null;
}
}
有人知道这是怎么回事吗?
提前谢谢。
由于您使用的是Drive v2,因此另一种方法(也在文档中)是通过HttpRequest
对象获取InputStream
。
/**
* Download a file's content.
*
* @param service Drive API service instance.
* @param file Drive File instance.
* @return InputStream containing the file's content if successful,
* {@code null} otherwise.
*/
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;
}
}