2017-11-15 6 views
0

에서 django-storages에서 내 S3 버킷의 내 미디어 및 정적 파일을 장고 백엔드 처리에 사용하고 있습니다.S3BotoStorage로 파일 이동

모든 것이 예상대로 작동하지만, 이미지가 models.Image 필드 인 경우 self.image.path를 호출 할 때 로컬 파일 시스템이 아니기 때문에 백엔드에서 ImplementedError가 발생하지 않습니다. 이것은 expected behavior입니다.

그러나 경로를 사용하여 이미지를 os.rename으로 이동합니다 (어느 것이 내 양동이에서도 작동하지 않습니다). 그 파일을 버켓으로 옮기는 접근 방법은 무엇입니까? 대신 파일을 이동 os를 사용

답변

0

, 당신은이 storage

파일을 이동하려면 FileField (또는이 경우, ImageField에), (결국를 사용하여에 read() 방법을 사용할 수 있습니다 사용해야 이전 파일을 삭제하려면 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) 
+0

이것은 이미지와 같은 큰 파일을 처리하는 데 매우 집중적 인 작업 일 수 있습니까? – Julian