【问题标题】:Upload user file to google drive through django web application通过 django web 应用程序将用户文件上传到谷歌驱动器
【发布时间】:2017-02-17 21:04:35
【问题描述】:

我想使用 Google Drive 作为我的 Django 项目的存储空间(特别是我需要存储用户拍摄的图像)。我想要达到的目标如下:

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

  • 上传后,我必须能够在我网站的图库中显示图片。

到目前为止,我已经阅读了 Google Drive API 文档,特别是,我已经成功地使用 OAuth2 完成了quickstart 用于服务器到服务器应用程序,请参阅here(快速入门涵盖了上传文件的情况到用户的 Google Drive 文件夹,因此我不需要用户身份验证的中间步骤;相反,我使用服务帐户来授权我的 api 请求)。

附带问题:

  • 有没有办法以可浏览的方式访问用户通过 API 上传到 Google Drive 的文件列表,或者 API 是他们的唯一接口?我可以使用类似于我自己的 Google Drive 帐户的 UI 访问它们吗?

  • 另外,我是 Google 服务的新手,开发人员控制台在我看来是一团糟……我不明白我可以使用多少磁盘空间,以及这个存储空间如何/是否与我自己的 Google Drive 帐户。

【问题讨论】:

  • 您能否澄清这是使用服务帐户还是普通帐户?请注意,您将找到的大多数示例都是针对用户想要将文件保存到自己的帐户的用例。您的用例不同,因此您需要相应地调整身份验证。
  • 我知道其中的区别,我使用的是服务器到服务器应用程序链接中所写的服务帐户。
  • 我的意思是您是将文件存储在服务帐户中,还是使用服务帐户只是为了代理访问普通帐户的共享文件夹?
  • 对不起,我不明白这个问题(可能是因为我不完全了解我在开发人员控制台中所做的事情,正如我在“相关问题”中所说的那样)。或多或少这就是我所做的:使用此 [链接][console.developers.google.com/start/api?id=drive] 创建一个项目,在仪表板中启用 Google Drive API,然后创建一个服务帐户和我用来授权我的请求的相关 json 密钥文件到 Google 云端硬盘。因此,我认为我将文件存储在服务帐户中(与我自己的帐户无关)。
  • 那么是的,您将文件存储在服务帐户中。有时人们使用服务帐户写入普通帐户的共享文件夹。

标签: django google-drive-api http-upload


【解决方案1】:

有没有办法以可浏览的方式访问用户通过 API 上传到 Google Drive 的文件列表,或者 API 是他们的唯一接口?我可以使用类似于我自己的 Google Drive 帐户的 UI 访问它们吗?

简短的回答是否定的。服务帐户专门供其“拥有”的应用程序访问。但是,如果这很重要,您可以使用文件夹共享来 (1) 使服务帐户数据在常规帐户的 UI 中可见,或 (2) 允许您的应用写入常规帐户的文件夹通过共享文件夹。请注意,无论哪种方式,文件都会消耗服务帐户的配额,而不是普通帐户。

另一种选择是根本不使用服务帐户,而是使用普通帐户进行所有操作。

我不知道有多少磁盘空间可供我使用,以及该存储空间如何/是否与我自己的 Google Drive 帐户相关。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多