我正在进行我的第一个更大的项目。我使用AWS S3来存储我的静态和媒体文件。
我发现如何设置存储取决于型号。用于消息中的公共图像和私人图像。";源";使用正确的acl设置上传文件";公共阅读";用于公共图像和";私人的";用于消息系统中的文件。但是当我使用sorl缩略图时,所有由sorl生成的图片都是公开的。我需要安全的私人图片,不想使用公共acl的私人文件。
你知道这个问题的解决方法吗?
我想到的是:
- 对私有文件使用另一个拇指应用程序,并更改存储,例如在后端或配置中
- 更改后端sorl中的名称约定以扩展文件名中的字符数。这不是我想要的,但按名称查找文件要困难得多
我回到我的项目并尝试解决这个问题。我必须为我未来的用户保护邮件中的私人文件。
所以。我研究了sorl是如何在源代码中工作的,并找到了解决方案。
在sorl/base.py文件中,我发现了以下内容:
关于def get_thumbnails
thumbnail = ImageFile(name, default.storage)
我把它改成:
if hasattr(file_, 'storage'):
thumbnail = ImageFile(name, file_.storage)
else:
thumbnail = ImageFile(name, default.storage)
现在,如果我在我的模型中的ImageFields中定义存储,我将对缩略图使用相同的存储。
现在我将开始工作,把这个变化放在自己的后端sorl:(
致以最诚挚的问候