2015-12-13 1 views
0

Я устанавливаю приложение django для использования облачного хранилища Google через apache-libcloud и django-хранилища.Django-хранилище с использованием apache-libcloud для загрузки файлов в хранилище 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 и файлы будут загружены успешно. Но я ищу способ контролировать контроль доступа к файлам; прямо сейчас он загружает все файлы как частные и вместо этого хочет, чтобы они были загружены, чтобы быть общедоступными.

enter image description here

Но, как видно из скриншота выше. Загруженные файлы не помечены для «Общие публично»

Может кто-нибудь посоветуете пожалуйста?

ответ

1

Вы можете установить default object access control на свое ведро, чтобы обеспечить открытый доступ к вновь созданным объектам.

Apache Libcloud позволяет отправлять дополнительные заголовки с вашим запросом, и вы можете произвести такое же поведение, добавив заголовок x-goog-acl в запрос на загрузку. Их документы не показывают этого, но это аналогично их S3 example.

Однако, похоже, что упаковка django-storages в libcloud не позволяет предоставлять эти данные, поэтому вам, вероятно, придется полагаться на управление доступом к объекту по умолчанию.

+0

Спасибо Натан, что точно, это не реализовано в django-хранилищах, поэтому мне пришлось переопределить класс и передать дополнительно метод '_save'. Но ваш ответ помог мне найти его, спасибо –

+2

Уход за публикацией вашего решения, чтобы другие люди-джанго могли его использовать? –

Смежные вопросы