반응형
11-08 05:45
- Today
- Total
Link
개발하는 고라니
[Spring] 파일 업로드 본문
반응형
1. MultipartFile의 transferTo()
2. FileCopyUtils 이용
파일을 업로드하는 방법은 크게 2가지가 있다. 하나는 HTML의 form태그를 이용하는 것이고, 하나는 ajax를 이용하는 방법이 있다.
업로드한 파일을 로컬 저장소에 저장하는 방법을 알아보고자 한다.
# 파일 업로드
Ajax를 이용해 Spring에서 지원하는 Multipart 타입으로 파일을 받는다.
1. C:\upload\temp : 파일 저장 경로
2. 저장될 파일 명 : UUID_filename.png (UUID는 파일의 고유 번호로, 파일명 중복 방지를 위해 적용한다.)
# 1. Multipart의 transferTo(Path path) 이용하기
@PostMapping(value = "/upload")
public void uploadFile(MultipartFile[] uploadFiles){
for(MultipartFile file : uploadFiles){
String originalName = file.getOriginalFilename();
String fileName = originalName.substring(originalName.lastIndexOf("\\") + 1);
String uuid = UUID.randomUUID().toString();
String savefileName = uploadPath + File.separator + uuid + "_" + fileName;
Path savePath = Paths.get(savefileName);
try {
file.transferTo(savePath);
} catch (IOException e) {
e.printStackTrace();
}
}
}
# 2. FileCopyUtils의 copy() 이용하기
@PostMapping(value = "/upload")
public void uploadFile(MultipartFile[] uploadFiles){
for(MultipartFile file : uploadFiles){
String originalName = file.getOriginalFilename();
String fileName = originalName.substring(originalName.lastIndexOf("\\") + 1);
String uuid = UUID.randomUUID().toString();
String savefileName = uploadPath + File.separator + uuid + "_" + fileName;
Path savePath = Paths.get(savefileName);
try {
FileCopyUtils.copy(file.getInputStream(), new FileOutputStream(savePath.toFile()));
} catch (IOException e) {
e.printStackTrace();
}
}
}
※ FileCopyUtils
void copy(byte[] in, File out) |
byte[]를 지정한 File에 복사 |
void copy(byte[] in, OutputStream out) |
byte[]를 지정한 OutputStream에 복사하고, stream을 닫는다 |
int copy(File in, File out) |
out파일을 in파일로 복사하고, 복사한 byte수 return |
int copy(InputStream in, OutputStream out) |
in의 내용을 out에 복사하고 스트림 닫는다. byte수 return |
int copy(Reader in, Writer out) |
Reader의 내용을 Writer에 복사하고 copy된 문자 수 return |
void copy(String in, Writer out) |
String의 내용들을 Writer에 복사한다 |
byte[] copyToByteArray(InputStream in) |
InputStream의 내용을 byte[]에 담아 보낸다. |
byte[] copyToByteArray(File in) |
File의 내용을 byte[]에 담아 보낸다. |
# References
반응형
'Framework > Spring' 카테고리의 다른 글
[Spring] 서버 -> 클라이언트 파일 다운로드 (0) | 2021.02.27 |
---|---|
[Spring] 업로드한 파일의 Content-Type (0) | 2021.02.25 |
[Spring] URL Encode : 공백을 '+'이 아닌 '%20' (0) | 2020.12.17 |
[Spring] 로컬 저장소의 이미지 파일 웹에서 보여주기 (0) | 2020.12.17 |
[Spring] 'JSON'으로 반환하는 @RestController (0) | 2020.12.16 |
Comments