spring boot로 s3 연동해서 비동기로 fileUpload 하려고 함!
먼저 동기로 postman 이용해서 확인 후,
비동기로 바꿔서 s3 업로드가 되는지 확인 하려고 실행 했는데 !
s3에 업로드 되고 db에도 저장이 잘 됐다 근데,,? 🙄
갑자기 떠오르는 Console에 WARN 로그,,
아,, 업로드 할 파일의 길이를 정해서 업로드 하라고 한다
그렇게 하지 않으면 out of memory error
발생시킬 수 있다고,, 😨
@Override
public String uploadFile(MultipartFile file) {
String fileName = System.nanoTime()+StringUtils.cleanPath(file.getOriginalFilename());
try {
s3Client.putObject(
new PutObjectRequest(
bucket,
fileName,
file.getInputStream(),
null)
.withCannedAcl(
CannedAccessControlList.PublicRead)
);
} catch (IOException e) {
throw new FileUploadException(ExceptionEnum.FILEUPLOAD_EXCEPTION);
}
return s3Client.getUrl(bucket, fileName).toString();
}
@Override
public String uploadFile(MultipartFile file) {
String fileName = System.nanoTime()+StringUtils.cleanPath(file.getOriginalFilename());
try {
InputStream is = file.getInputStream();
Long contentLength = Long.valueOf(IOUtils.toByteArray(is).length);
ObjectMetadata metaDate = new ObjectMetadata();
metaDate.setContentLength(contentLength);
s3Client.putObject(
new PutObjectRequest(
bucket,
fileName,
file.getInputStream(),
metaDate)
.withCannedAcl(
CannedAccessControlList.PublicRead)
);
} catch (IOException e) {
throw new FileUploadException(ExceptionEnum.FILEUPLOAD_EXCEPTION);
}
return s3Client.getUrl(bucket, fileName).toString();
}
이렇게 수정하니 편_안하게 업로드 잘 된다,
아 그리고 ! 비동기 ajax로 file 보낼 때 multipart/form-data;charset=UTF-8
로 보내는거 잊지 말기😋