티스토리 뷰
반응형
클라이언트에서 파일 전송을 위한 것을 서버에서 적용하기 위해 MultipartFile이라는 Object를 주로 사용합니다. MultipartFile은 스프링에 기본 내장되어 있는 클래스입니다. 패키지의 출처는 아래와 같습니다.
import org.springframework.web.multipart.MultipartFile;
멀티파트 파일을 올리기 전에 Util 클래스를 따로 생성하여 적용하여도 좋습니다.
보통은 Controller에서 @ModelAttribute 어노테이션을 사용하던지, @RequestParam 어노테이션을 사용하여도 됩니다.
Controller
@PostMapping("/imageUpload")
@ResponseBody
public String imageUpload(@ModelAttribute MultipartFile file){
return service.imageUpload(file.getMultipartFile());
}
클라이언트는 웹 또는 앱이 있으나 편의상 웹을 기준으로 소스를 작성해보면 아래와 같을 것입니다. 가장 보편적으로 사용하는 jQuery ajax를 사용하였습니다.
jQuery ajax
let file = $('input[name=multipartFile1]')[0];
let formData = new FormData();
formData.append('multipartFile', file.files[0]);
if(file.files || file.files[0])
$.ajax({
url: "/main/imageUpload",
type: "POST",
enctype: "multipart/form-data",
data: formData,
processData: false,
contentType: false,
success : function(data){
$("input[type=multipartFile1]").val(data);
},
error : function(){
reject();
}
});
이렇게 클라이언트에서 멀티파일을 전송할 준비가 끝났으면, 서버에서 다음과 같이 처리 가능합니다.
private static String DOMAIN = "/usr/niyoung";
private static String ROOT = "/main";
private static String PATH_FORMAT = "/yyyy/MM/dd";
public String imageUpload(MultipartFile file) {
try {
byte[] fileData = IOUtils.toByteArray(file.getInputStream());
String sourceFileName = file.getOriginalFilename();
String fileExt = FilenameUtils.getExtension(sourceFileName).toLowerCase();
String path = new SimpleDateFormat(PATH_FORMAT).format(new Date());
String contentType = file.getContentType();
String fileName = System.currentTimeMillis() + "." + fileExt;
return DOMAIN + ROOT + path + "/" + fileName;
} catch (IOException e) {
log.error(ExceptionUtils.getStackTrace(e));
return null;
}
}
DOMAIN은 사용자의 디렉터리 또는 AWS Service를 사용한다면 변경하여도 좋습니다. ROOT는 데이터가 이미지로 변환되는 디렉터리를 의미합니다.
반응형
'Server' 카테고리의 다른 글
[Java] 타입 변환 (0) | 2020.04.17 |
---|---|
Firebase 알아보기 (0) | 2020.04.07 |
[Java] Model과 Lombok(Builder) (0) | 2020.02.12 |
[Java] Cron 표현식 (0) | 2019.12.19 |
SQL에 대해 알아보자 (0) | 2019.12.15 |
[Java] 날짜 생성/변환 (0) | 2019.12.06 |
댓글
공지사항