Django-storage 使用 apache-libcloud 将文件上传到公开共享的 google 存储

Django-storage using apache-libcloud to upload files to google storage as shared publicly

我通过 apache-libcloud 和 django-storages 将我的 django 应用程序设置为使用 google 云存储。

我的 LIBCLOUD_PROVIDER 看起来像这样

LIBCLOUD_PROVIDERS = {
    'default': {
        'type': 'libcloud.storage.types.Provider.GOOGLE_STORAGE',
        'bucket': 'bucket-name',
        'user': os.environ.get('GCE_STORAGE_KEY'),
        'key': os.environ.get('GCE_STORAGE_SECRET')
    },
}

STATICFILES_STORAGE = 'etc.utilities.storage.GSStaticBucket'

当我 运行 ./manage.py collectstatic 并且文件上传成功时,它似乎工作正常。但是我正在寻找一种方法来控制文件访问控制;现在它将所有文件上传为私有文件,而是希望上传的文件可以公开访问。

但是正如您从上面的屏幕截图中看到的那样。上传的文件未标记 "Shared Publicly"

有人可以指点一下吗?

您可以在存储桶上设置 default object access control 以授予对新创建对象的 public 读取权限。

Apache Libcloud allows you to send extra headers with your request, and you can effect the same behavior by adding the x-goog-acl header to the upload request. Their docs don't show it, but it's analogous to their S3 example.

但是,django-storages 对 libcloud 的包装似乎不允许提供该数据,因此您可能不得不依赖存储桶默认对象访问控制。