我用 java 编写的桌面应用程序尝试从 Google Drive 下载公共(public)文件。正如我发现的,它可以通过使用文件的 webContentLink
来实现(它可以在没有用户授权的情况下下载公共(public)文件)。
所以,下面的代码适用于小文件:
String webContentLink = aFile.getWebContentLink();
InputStream in = new URL(webContentLink).openStream();
但它不适用于大文件,因为在这种情况下,在没有用户确认的情况下无法通过 webContentLink
直接下载文件,并带有谷歌病毒扫描警告。查看示例:web content link .
所以我的问题是如何在未经用户授权的情况下从 Google Drive 获取公共(public)文件的内容?
最佳答案
2015 年 12 月 8 日更新 根据Google Support使用
googledrive.com/host/ID
方法将于 2016 年 8 月 31 日关闭。
我刚遇到这个问题。
诀窍是将您的 Google Drive 文件夹视为虚拟主机。
2015 年 4 月 1 日更新
Google 云端硬盘已更改,有一种直接链接到您的云端硬盘的简单方法。我在下面留下了我以前的答案以供引用,但这里有一个更新的答案。
- 在 Google 云端硬盘中创建一个公共(public)文件夹。
- 公开分享此驱动器。
- 当您在文件夹中时,从地址栏中获取您的文件夹 UUID
- 将该 UUID 放入此 URL
https://googledrive.com/host/<folder UUID>/
- 将文件名添加到文件所在的位置。
https://googledrive.com/host/<folder UUID>/<file name>
<删除> Which is intended functionality by Google
new Google Drive Link .
您所要做的就是简单地获取公共(public)共享驱动器文件夹的 主机 URL。为此,您可以上传纯 HTML 文件并在 Google 云端硬盘中预览以找到您的主机 URL。
步骤如下:
- 在 Google 云端硬盘中创建一个文件夹。
- 公开分享此驱动器。
- 上传一个简单的 HTML 文件。添加任何其他文件(子文件夹ok)
- 在 Google 云端硬盘中打开并“预览”HTML 文件
- 获取此文件夹的 URL 地址
- 从您的 URL 文件夹库创建一个直接链接 URL
- 此网址应允许直接下载您的大文件。
[编辑]
我忘记添加了。如果您使用子文件夹来组织您的文件,您只需像在 URL 层次结构中所期望的那样使用文件夹名称。
https://googledrive.com/host/<your public folders id string>/images/my-image.png
我想做的事
我使用 Virtual Box for Vagrant 创建了一个自定义 Debian 镜像。我想与同事分享这个“.box”文件,以便他们可以将直接链接放入他们的 Vagrantfile。
最后,我需要一个指向实际文件的直接链接。
Google 云端硬盘问题
如果您将文件权限设置为公开可用并使用 gdocs2direct 之类的内容创建/生成直接访问链接工具或只是自己制作链接:
https://docs.google.com/uc?export=download&id=<your file id>
您将获得一个基于 cookie 的验证码并提示“Google 无法扫描此文件”提示,这不适用于 wget 或 Vagrantfile 配置等内容。
它生成的代码是一个简单的代码,附加了 GET 查询变量 ...&confirm=###
到字符串,但它是每个用户特定的,所以你不能为其他人复制/粘贴该查询变量。
但是如果你使用上面的“网页托管”方法,你可以绕过那个提示。
希望对你有帮助!
关于java - 使用 Google Drive API 从 Google Drive 直接下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20665881/