我正在使用S3BotoStorage中的django-storages来处理我的S3 Bucket上的媒体和静态文件,用于我的Django后端。
所有内容都按预期工作,但是后端引发了一个未实现的错误,因为当我在其中调用self.image.path时,它不是本地文件系统,其中Image是一个models.Image字段。这是expected behavior。
但是我正在使用路径来移动带有os.rename的图像(这对我的存储桶也不起作用)。将该文件移到存储桶上的方法是什么?
答案 0 :(得分:0)
您应该使用storage
,而不是使用os
移动文件
要移动文件,您可以使用read()
上的FileField
方法(或者在此情况下为ImageField
),并最终使用storage
删除旧文件)。
file_content = my_model.my_image.read()
file_name = my_model.my_image.name
# Renaming the file
my_model.my_image = my_model.my_image.save('new_file_name', ContentFile(file_content))
# If you want to delete the original file afterwards:
from django.core.files.storage import default_storage
default_storage.delete(file_name)