【发布时间】:2019-01-29 07:13:42
【问题描述】:
我有一个基于 Google Cloud Platform 构建的 Django 项目。我们使用的是 Django 的身份验证系统,并且大多数(几乎所有)用户没有在 GCP 项目中设置了凭据,因此所有文件身份验证都需要基于 Django 而不是 GCP。
我们的文件存储后端配置很基础,文件按预期成功上传到GCS:
DEFAULT_FILE_STORAGE = 'storages.backends.gcloud.GoogleCloudStorage'
GS_BUCKET_NAME = 'my-bucket'
为文件生成的 URL 采用以下形式(同样,正如预期的那样):
https://storage.googleapis.com/my-bucket/my-document.txt
问题是这个存储桶不能公开可读,因为文件具有基于 Django 权限系统中设置的规则的访问控制,每个用户都不同。
如何让 Django 提供文件而不是 GCS 提供的文件?
想到的一个想法是拥有从 GCS 加载文件并将它们传递给请求客户端的视图,但我怀疑这不能很好地处理大文件,因为我需要将整个文件加载到本地内存中 ( bad) 或分块加载文件并将它们写入这些块中的响应流,但不知道这是否可以在 Django 中完成。
【问题讨论】:
-
这里的另一种可能的解决方案:andrewbrookins.com/django/…
-
您最终是如何处理这种情况的?我有类似的问题stackoverflow.com/questions/63969069/…
-
我基本上“解决”了它,如已接受答案下的评论中所述。
标签: python django google-cloud-platform google-cloud-storage