django-queued-storages + boto + amazon s3的私人文件

时间:2014-07-23 19:33:50

标签: python django amazon-s3 boto django-storage

所以我的项目中有django-queued-storages + django-storages + boto,我想将我的pdf文件上传到S3并立即将其设为私有。

我尝试过很多方法但没有结果:

publication_storage = QueuedStorage(
    local='django.core.files.storage.FileSystemStorage',
    remote='storages.backends.s3boto.S3BotoStorage',
    remote_options=dict(acl="private")
)

并没有将我的文件设为私有。

我也根据http://www.gyford.com/phil/writing/2012/09/26/django-s3-temporary.php尝试了类似的事情:

      k = boto.s3.key.Key(bucket)
      k.key = settings.MEDIA_DIRECTORY + self.private_file
      k.set_acl('private')

所有这些仍然保持我上传的PDF可以访问外部。

任何人都可以帮助我吗?也许是一个完整的例子,所以我可以尝试一下,我已经尝试了很多我在google上找到的没有运气的东西

1 个答案:

答案 0 :(得分:0)

与你来回走动,这就是有效的。

由于您在同一个存储桶中同时拥有mediastatic,因此请将存储桶设为私有。然后,只需右键单击S3管理面板中的文件夹并单击“公开”,即可公开static文件夹。

对于media文件夹,您的第二个代码块应该足够

  k = boto.s3.key.Key(bucket)
  k.key = settings.MEDIA_DIRECTORY + self.private_file
  k.set_acl('private')

这对我来说也很有教育意义,因为我在S3上有两个独立的存储桶,一个用于上传,一个用于静态。所以很自然地我没有遇到这个问题。

祝你好运。