使用S3BotoStorage移动文件

时间:2017-11-15 02:15:42

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

我正在使用S3BotoStorage中的django-storages来处理我的S3 Bucket上的媒体和静态文件,用于我的Django后端。

所有内容都按预期工作,但是后端引发了一个未实现的错误,因为当我在其中调用self.image.path时,它不是本地文件系统,其中Image是一个models.Image字段。这是expected behavior

但是我正在使用路径来移动带有os.rename的图像(这对我的存储桶也不起作用)。将该文件移到存储桶上的方法是什么?

1 个答案:

答案 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)