Closed isayaksh closed 1 year ago
Amazon S3는 파일 이름의 형식에 제한을 두지 않는다. 하지만 URL 경로나 파일 이름에 유니코드 문자나 특수 문자가 포함될 경우 문제가 발생할 수 있다. 파일 이름을 URL 경로로 사용할 때 인코딩 문제가 발생할 수 있다.
따라서 Java.util에서 제공하는 URLEncoder
를 이용하여 클라이언트로부터 전달 받은 fileName
을 encode 한다.
S3 bucket에 파일 이름이 jari-bean.png
에 해당하는 이미지 파일이 존재하고,
파일 이름이 같은 jari-bean.png
인 파일을 S3 bucket에 저장할 경우 기존에 존재하던 이미지를 덮어쓴다.
다시 말하면 기존의 jari-bean.png
이미지는 사라지게 된다.
업로드 파일 이름 중복이 발생하여 기존 파일이 삭제되는 것을 방지하기 위해 encode된 fileName
앞에 임의적으로 생성한 uuid
를 붙여준다.
✏️ Description
기존에 구현항 방식은 pre-signed url을 통해 프론트에서 S3 버킷에 직접 이미지를 업로드하는 방식이었다. 이미지를 서버를 거치지 않고 프론트에서 직접 S3 버킷으로 저장하는 방법은 네트워크 낭비를 줄일 수 있었다.
🔥 Problem
그러나 프론트에서 직접 S3에 이미지를 업로드하게 되면 다음과 같은 문제가 발생할 수 있다.
🛠 Solution
위 문제를 방지하기 위해서는 클라이언트에서 S3에 직접 접근하는 것이 아닌 서버를 통해 이미지를 업로드하는 방법으로 수정해야 한다.