1

파일 이름을 "uuid4(). pdf"로 저장하는 Django 모델이 있습니다. 여기서 uuid4는 생성 된 각 인스턴스에 대해 임의의 uuid를 생성합니다. 이 파일 이름은 amazon s3 서버에도 같은 이름으로 저장됩니다.파이썬에서 파일 이름 (amazon S3)에 동적 내용 처리 추가

아마존 s3에 업로드하는 파일 이름에 대한 사용자 정의 처리를 추가하려고합니다. 파일을 다운로드 할 때마다 사용자 정의 이름을보고 싶기 때문입니다. 동시에, 나는 uuid 파일 이름으로 s3에 파일을 저장하길 원합니다.

따라서 파이썬 2.7에 django-storages을 사용하고 있습니다. 다음과 같이 설정에서 content_disposition을 추가하려고 시도했습니다.

AWS_CONTENT_DISPOSITION = 'core.utils.s3.get_file_name' 

여기서 get_file_name()은 파일 이름을 반환합니다.

AWS_HEADERS = { 
'Content-Disposition': 'attachments; filename="%s"'% get_file_name(), 

} 

행운을 :

은 또한 설정이 추가 시도!

이 문제를 구현하는 사람은 누구입니까?

답변

0

나는 S3에 파일을 업로드하는 동안, 모델의 저장() 메서드를 재정의하고, 거기에 헤더를 설정 있도록, 장고 - 스토리지에서 S3BotoStorage을 사용하는 것 같아요.

나는 아래의 예를 제공하고있다 :

class ModelName(models.Model): 
    sthree = S3BotoStorage() 
    def file_name(self,filename): 
     ext = filename.split('.')[-1] 
     name = "%s/%s.%s" % ("downloads", uuid.uuid4(), ext) 
     return name 
    upload_file = models.FileField(upload_to=file_name,storage = sthree) 
    def save(self): 
     self.upload_file.storage.headers = {'Content-Disposition': 'attachments; filename="%s"' %self.upload_file.name} 
     super(ModelName, self).save()