我有一个基于 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 加载文件并将它们传递给请求的客户端,但我怀疑这不会很好地处理大文件,因为我需要将整个文件加载到本地内存(坏)或以块的形式加载文件并将它们以这些块的形式写入响应流,但不知道这是否可以在 Django 中完成。
1 回答

侃侃尔雅
TA贡献1801条经验 获得超16个赞
如果您的应用程序决定了对文件的访问(通过 Django 的身份验证系统),那么您必须执行您所描述的传递方法。
如果文件很大,您可以流式传输响应,而不是一次加载并发送整个响应-请参见django.http.StreamingHttpResponse
。
添加回答
举报
0/150
提交
取消