gpt4 book ai didi

python - Django 直接从外部存储提供文件

转载 作者:行者123 更新时间:2023-11-28 18:08:46 35 4
gpt4 key购买 nike

我有一个基于 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 提供的文件?

我想到的一个想法是让 View 从 GCS 加载文件并将它们传递给请求客户端,但我怀疑这不能很好地处理大文件,因为我需要将整个文件加载到本地内存中(坏)或分块加载文件并将它们写入这些 block 中的响应流,但不知道这是否可以在 Django 中完成。

最佳答案

如果您的应用程序决定了对文件的访问(通过 Django 的身份验证系统),那么您将必须执行您所描述的传递方法。

如果文件很大,您可以流式传输响应而不是一次加载和发送整个响应——参见 django.http.StreamingHttpResponse .

关于python - Django 直接从外部存储提供文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51976787/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com