Django-storage使用apache-libcloud将文件作为公共共享上传到谷歌存储

时间:2015-12-13 10:55:37

标签: django google-cloud-storage django-storage libcloud

我通过apache-libcloud和django-storage设置我的django应用程序以使用谷歌云存储。

我的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并且文件上传成功时似乎工作正常。但我正在寻找一种控制文件访问控制的方法;现在它将所有文件上传为私有文件,而不是希望它们上传为可公开访问。

enter image description here

但正如您从上面的截图中看到的那样。上传的文件未标记为“共享公开”

有人可以提出建议吗?

1 个答案:

答案 0 :(得分:1)

您可以在存储桶上设置default object access control,以便为新创建的对象提供公共读取权限。

Apache Libcloud允许您使用您的请求发送额外的标头,并且您可以通过向上传请求添加x-goog-acl标头来实现相同的行为。他们的文档没有显示,但它与S3 example类似。

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