본문 바로가기
개발/SpringBoot

SpringBoot AWS S3 한글명 파일업로드 에러

by 궁즉변 변즉통 통즉구 2023. 8. 20.
반응형

 SpringBoot에서 AWS S3에 파일 업로드 중 오류가 발생했다. 테스트 시 문제없이 동작하던 코드였는데 확인해보니 한글 파일명이 문제가 되었다.

 

아래 코드와 같이 S3에 업로드 되는 파일명은 중복 방지를 위해 UUID를 사용했고, 원본 파일명(originFileName)은 UserMetadata로 저장 하기 위해 코드를 추가했는데 원본 파일명(originFileName)이 한글인 경우 S3에서 오류가 발생했다. 

public String uploadImage(MultipartFile file) throws Exception{
	String originFileName = file.getOriginalFilename();
	String filePath = uploadPath + UUID.randomUUID() + originFileName.substring(originFileName.lastIndexOf("."));;
	ObjectMetadata metadata = new ObjectMetadata();
	metadata.addUserMetadata("originfilename", originFileName);
	...
}

 

해결 방법은 다음과 같이 한글파일명 부분을 URL 인코딩 처리를 통해서 해결했다.

public String uploadImage(MultipartFile file) throws Exception{
	String originFileName = file.getOriginalFilename();
	String filePath = uploadPath + UUID.randomUUID() + originFileName.substring(originFileName.lastIndexOf("."));;
	ObjectMetadata metadata = new ObjectMetadata();
	// URL인코딩
	metadata.addUserMetadata("originfilename", URLEncoder.encode(originFileName, StandardCharsets.UTF_8)); 
	...
}

 

SpringBoot에서 S3파일업로드 전체 과정은 아래 링크를 참조한다. 

 

SpringBoot AWS S3 파일 업로드

SpringBoot 백엔드에서 AWS S3로 파일 업로드 하는 방법을 알아본다. 1. AWS 설정(S3버킷 생성 및 IAM 설정) 테스트용 S3 버킷을 간단히 생성한다. IAM에서 S3 접근을 위한 계정 및 AccessKey 설정을 한다. 먼저

happy-jjang-a.tistory.com

 

반응형

댓글