반응형
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' 카테고리의 다른 글
Invalid value type for attribute 'factoryBeanObjectType': java.lang.String 에러 해결 (1) | 2024.10.09 |
---|---|
SpringBoot3 CircuitBreaker Resilience4j 알아보기 (1) | 2023.10.08 |
Gradle build jar 시 plain(xxxx-plain.jar) 제거하기 (0) | 2023.07.22 |
springdoc swagger ui disable Petstore(swagger-ui enabled false not working) (0) | 2023.06.19 |
SpringBoot3(SpringBatch5) 동일(or 이전) 파라미터 재사용 해결 (0) | 2023.06.05 |
댓글