파일 업로드 관련하여 개인 프로젝트 수정 요청을 받았다.
사실 실무를 할 때는 업로드 같은 필수 기능들은 다 common util 화 되어 있어서 신경 쓸 필요가 없지만..
개인 프로젝트에서는 핵심 기능을 먼저 신경 쓰다 보니 싱싱한? 코딩이 되어 있는 것 같다.
요청 사항은 일단 "입력 데이터들 등록하면서 같이 파일 업로드 처리도 되게 해달라" 인데, 음.. 별 거 아닌데? 라고.. 생각했지만
일단 상태 파악을 위해서 개발 환경 세팅하는 데에서도 시간을 썼고 퇴근하고 보려니 피곤하고, 주말에는 산책 갔다 왔더니 피곤하고,
수 많은 핑계로 미루고 미루고 있었는데, 요청하신 분의 메세지 "잘 돼가?"
음....
괜히 한다고 했나.. 싶은 생각이 들었다...@.@
부담 스럽네...>>_<<
여튼!!
보기로 했으니까 보자~
Single File
[ MultipartDTO ]
import org.springframework.web.multipart.MultipartFile;
public class MultipartDto {
private MultipartFile file;
}
[ Controller ]
@PostMapping(value = "/board")
public @ResponseBody String uploadFileInDto(@ModelAttribute MultipartDto board) {
MultipartFile multipartFile = board.getFile();
try (FileOutputStream writer = new FileOutputStream("./images/" + multipartFile.getOriginalFilename())) {
writer.write(multipartFile.getBytes());
} catch (Exception e) {
return "upload fail";
}
return "upload success";
}
Multi File
[ MultipartDTO ]
import org.springframework.web.multipart.MultipartFile;
public class MultipartListDto {
private List<MultipartFile> files;
}
[ Controller ]
@PostMapping(value = "/board/multi")
public @ResponseBody String uploadFileListInDto(@ModelAttribute MultipartListDto board) {
for (MultipartFile multipartFile : board.getFiles()) {
try (FileOutputStream writer = new FileOutputStream("./images/" + multipartFile.getOriginalFilename())) {
writer.write(multipartFile.getBytes());
} catch (Exception e) {
return "fail";
}
}
return "success";
}
Multi File Map
[ MultipartMapListDto ]
import org.springframework.web.multipart.MultipartFile;
public class MultipartMapListDto {
private Map<String, List<MultipartFile>> files;
/* single file
private Map<String, MultipartFile> files;
*/
}
[ Controller ]
@PostMapping(value = "/board/map")
public @ResponseBody
String uploadFileMapListInDto(@ModelAttribute MultipartMapListDto board) {
Map<String, List<MultipartFile>> files = board.getFiles();
for (String key : files.keySet()) {
List<MultipartFile> multipartFiles = files.get(key);
for (MultipartFile multipartFile : multipartFiles) {
try (FileOutputStream writer = new FileOutputStream("./images/" + multipartFile.getOriginalFilename())) {
writer.write(multipartFile.getBytes());
} catch (Exception e) {
return "fail";
}
}
}
return "success";
}
front 는 생략 #_+
728x90
'Carpe Programming > java' 카테고리의 다른 글
[epoch time] unix timestamp 쯤? (0) | 2014.10.01 |
---|---|
[Date] 특정 날짜의 요일 구하기. (0) | 2013.03.21 |
[txt 파일 수정] 특정 문자가 포함된 열삭제 (0) | 2013.02.26 |
[파일 존재 여부 체크] URLConnection (0) | 2013.02.20 |
동일 서버에 있는 파일 다른 이름으로 복사 (0) | 2012.12.12 |