0

我设置了 Google 选择器以及 Blobstore。我可以将文件从本地计算机上传到 Blobstore,但现在我设置了 Picker,它可以工作,但我不知道如何使用信息(url?fileid?)然后加载选定的文件到 Blobstore?关于如何做到这一点的任何提示?我在 Google 的资源上找不到很多关于它的东西

4

3 回答 3

1

Google Picker 和 App Engine Blobstore 之间没有直接链接。它们是用于不同工作的不同工具。Google Picker 被设计为最终用户工具,用于从用户的 Google 帐户中选择数据。碰巧 Picker 也提供了一个上传接口(到 Google Drive)。另一方面,Blobstore 被设计为 App Engine 应用程序的 Blob 存储机制。

理论上,您可以编写一个脚本来连接两者,但有一些注意事项:

  • 您的应用需要使用 OAuth2 访问用户的 Google Drive 帐户。这是必要的,因为 Picker API 是客户端 API,而 Blobstore API 是服务器端 API。您需要将选定的文档 URL 发送到服务器,然后下载该文档,最后将其保存到 Blobstore。
  • 除非您随后从云端硬盘中删除数据(由于第 3 点非常危险),否则您的数据将保存在 2 个位置
  • 您无法确定用户是选择了现有文件还是上传了新文件
  • 不是很好的用户体验 - 他们上传到云端硬盘的用户内容

从本质上讲,这听起来是个坏主意!你的用例是什么?

于 2014-03-20T08:22:58.347 回答
0

假设您想从自己的 Google Drive 中选择一个文件并将其移动到 Blobstore。

1)首先您必须为 Google Drive API执行Oauth

2)从驱动器中选择文件时使用选择器,您需要获取它的ID

3) 使用在步骤 2 中获得的id,您可以使用 Drive API 以编程方式下载它

4)下载文件后,您可以使用 FileService(虽然已弃用)将文件上传到
Blobstore。

于 2014-11-19T20:04:23.107 回答
0

@Gwyn - 我没有足够的声誉来为您的解决方案添加评论,但我对问题 3 有一个想法:您无法确定用户是选择了现有文件还是上传了新文件

选择文件时是否可以使用Response.VIEW查看他们正在使用的视图?如果您有一个用于驱动器文件的视图构造函数和一个用于上传文件的视图构造函数,例如

var driveView = new google.picker.View(google.picker.ViewId.DOCS);
var uploadView = new google.picker.DocsUploadView();

这会让您知道该文件是新上传的(可以安全删除)还是现有文件(不管它)?

于 2014-04-15T04:26:55.783 回答