im = storage.open('old_path_filename', 'r')
strorage.save('new_path_with_old_filename', im)
在我的 django 项目中,我将 django-storages 和 amazon S3 用于我的静态和媒体文件。我需要在亚马逊和旧文件名中使用新路径保存旧文件。你可以帮帮我吗?
您可以使用 DjangoContentFile
来执行此操作
from django.core.files.base import ContentFile
new_file = ContentFile(original_file.read())
new_file.name = original_file.name
example = Example()
example.file = new_file
example.save()
这样你就不用下载内容来保存它
# Bucket: bucket name
# Key: file path
from storages.backends.s3boto3 import S3Boto3Storage
s3 = S3Boto3Storage()
def copy(Bucket_A, Bucket_B, Key_A, Key_B):
copy_source = {'Bucket': Bucket_A, 'Key': Key_A}
s3.bucket.meta.client.copy(copy_source, Bucket_B, Key_B)
s3.delete(Key_A)
return Key_B
def move(Bucket_A, Bucket_B, Key_A, Key_B):
copy(Bucket_A, Bucket_B, Key_A, Key_B)
s3.delete(Key_A)
return Key_B