Post

[AWS S3]이미지 링크가 다운로드 되는 현상 해결

[AWS S3]이미지 링크가 다운로드 되는 현상 해결

문제

FAST API 서버에서 AWS S3에 업로드한 이미지 링크가 웹에서 열리지 않고 다운로드가 되는 현상이 발생했었다

해결법

1. 이미지 파일 확인

이미지를 S3에 드래그해서 직접 업로드 하여 이미지 파일 자체 문제인지 확인 결과

직접 업로드한 이미지는 링크에서 바로 이미지가 보여서 이미지 파일 자체 문제는 아니였다

2. Content-type 확인

코드를 통해 업로드 되는 이미지의 content-type 확인 결과 binary/octet-stream으로 업로드 되고 있었다

image.png

기존의 읽기 권한 외에도 UploadFile의 content type을 가져와서 지정하도록 수정하였다

1
2
3
4
5
6
7
8
9
        content_type = module_set_images.content_type if module_set_images.content_type else "image/jpeg"
        saved_images = s3_storage.upload_file_generic(
            module_set_images.file,
            "moduletype",
            module_set_id,
            filename=module_set_images.filename,
            default_ext=".jpg",
            ExtraArgs={"ACL": "public-read", "ContentType": content_type} // content type 추가
        )

image.png

하지만 content-type이 제대로 image로 적용되어도 동일한 현상이 발생했다

3. 이미지 파일 이름 변경

image.png

image.png

링크로 다운로드 받은 이미지 파일의 공백이 전부 +로 표시되는것을 보고

공백을 전부 지우고 업로드 하니 정상적으로 이미지를 확인 가능했다

후기

아마 공백 문자열 인코딩으로 발생하는 현상 같은데 구체적인 원인은 잘 모르겠다

This post is licensed under CC BY 4.0 by the author.