所以我的项目中有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上找到的没有运气的东西
答案 0 :(得分:0)
与你来回走动,这就是有效的。
由于您在同一个存储桶中同时拥有media
和static
,因此请将存储桶设为私有。然后,只需右键单击S3管理面板中的文件夹并单击“公开”,即可公开static
文件夹。
对于media
文件夹,您的第二个代码块应该足够
k = boto.s3.key.Key(bucket)
k.key = settings.MEDIA_DIRECTORY + self.private_file
k.set_acl('private')
这对我来说也很有教育意义,因为我在S3上有两个独立的存储桶,一个用于上传,一个用于静态。所以很自然地我没有遇到这个问题。
祝你好运。