2017-02-17 26 views
0

我想使用Google Drive作为我的Django项目的存储(特别是我需要存储用户拍摄的图像)。我试图实现以下内容:通过django网络应用程序上传用户文件到谷歌驱动器

  • 用户使用表格上传他们的图像。这些文件必须通过Django以某种方式路由,然后使用Google Drive API将它们重定向到Google Drive。我不直接从用户浏览器向Google云端硬盘发送文件的原因是我应该在客户端存储访问Google Drive API的秘密密钥(当然,最终用户不能直接访问这些密钥)。

  • 一旦上传,我必须能够在我的网站上的图库中显示图像。

到目前为止,我已经读过谷歌云端硬盘API文档,特别是,我已经成功地完成中使用OAuth2服务器到服务器的应用程序quickstart,看到here(快速启动覆盖了文件上传的情况下到用户的Google云端硬盘文件夹,因此我不需要用户身份验证的中间步骤,而是使用服务帐户来授权我的api请求)。

SIDE问题:

  • 是否有可浏览的方式来访问通过API由用户来谷歌驱动器上传的文件列表的方式或API是他们的唯一接口?我可以使用类似于我自己的Google云端硬盘帐户的用户界面访问它们吗?

  • 此外,我是新手,Google服务和开发者控制台在我看来相当混乱......我还不知道有多少磁盘空间可用于我以及如何/如果此存储空间与我的拥有Google云端硬盘帐户。

+0

你能澄清这是否使用服务帐户或常规帐户?请注意,您会发现大多数示例都是针对用户想要将文件保存到自己的帐户的用例。您的用例不同,因此您需要相应地调整auth。 – pinoyyid

+0

我意识到不同之处,我正在使用服务器到服务器应用程序链接中写入的服务帐户。 – Sirion

+0

我的意思是你将文件存储在服务帐户中,还是仅使用服务帐户来代理访问常规帐户的共享文件夹? – pinoyyid

回答

0

是否有可浏览的方式来访问通过API或API由用户来谷歌驱动器上传的文件列表中选择一个方法,就是他们的唯一接口?我可以使用类似于我自己的Google云端硬盘帐户的用户界面访问它们吗?

简短的回答是否定的。服务帐户专门用于仅由他们“拥有”的应用程序访问。但是,如果这一点很重要,则可以使用文件夹共享:(1)在常规帐户的用户界面中显示服务帐户数据,或者(2)允许您的应用程序写入常规帐户的文件夹通过共享文件夹。请注意,无论哪种方式,这些文件都将消耗服务帐户上的配额,而不是常规帐户。

另一种选择是根本不使用服务帐户,并且使用常规帐户执行所有操作。

我还不知道有多少磁盘空间可供我使用,以及该存储空间与我自己的Google云端硬盘帐户的关联方式。

最简单的方法是使用About.get(https://developers.google.com/drive/v3/reference/about/get)来获得您的限制和使用配额。服务帐户是一个独立帐户,与您用来创建帐户的常规帐户没有关系(至少在存储和访问方面)。