为了账号安全,请及时绑定邮箱和手机立即绑定

Django直接从外部存储服务文件

Django直接从外部存储服务文件

HUWWW 2021-05-30 21:45:10
我有一个基于 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


查看完整回答
反对 回复 2021-06-01
  • 1 回答
  • 0 关注
  • 164 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号