【发布时间】:2022-01-18 18:38:47
【问题描述】:
对于用户配置文件,我在模型上有一个默认图像
image = models.ImageField(default='default.jpg', upload_to='profile_pics')
我现在在 s3 存储桶中有这张图片。如何从 s3 存储桶而不是本地引用此图像
如果我尝试使用模型上的直接图像路径 https://uploadfiles.s3.amazonaws.com/profile_pics/default.jpg 或存储桶路径 'uploadfiles/profile_pics/default.jpg 我收到错误 This backend doesn't support absolute paths
我不确定如何引用我确实可以正确访问存储桶并且上传工作正常的图像
更新:
我更正了 This backend doesn't support absolute paths 违规代码是 img = Image.open(self.image.path) 我更正了 img = Image.open(self.image.name) 仍然很难将文件放在应用程序满意的位置
更新 2:
因此,在我的静态文件夹中,我创建了一个名为 staticimages 的文件夹,默认图像为 static\staticimages\default.jpg,然后运行 collectstatic 并将文件上传到 s3 存储桶。现在的问题是,当文件上传到 s3 时,它们不在名为 static 的文件夹中,文件直接上传到存储桶。因此,模型上文件的链接不再有效,因为 s3 存储桶上不存在 static 文件夹,但它在本地存在,这会导致文件不存在的错误。如果目录结构永远无法从本地匹配到 s3,那么如何链接文件。
更新3:
如果我将图像放在 s3 存储桶的根目录中,它就可以工作。虽然这并不理想,但我宁愿将它放在一个文件夹中,这暂时可以使用
【问题讨论】:
标签: django amazon-s3 django-models