<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>
@Bean(name = "multipartResolver")
public CommonsMultipartResolver multipartResolver() {
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
multipartResolver.setMaxUploadSize(1000000000); // byte
return multipartResolver;
}
<input type="file"/>
<input type="file"/>
<input type="file"/>
<button onclick="goFile()">upload</button>
<script>
async function goFile(){
const formData = new FormData();
※ 파일 하나만 올릴경우
const fileField = document.querySelector('input[type="file"]');
formData.append('file', fileField.files[0]);
※ 파일 여러개 올릴경우
let elems = document.querySelectorAll('input[type="file"]');
elems.forEach(function(value,index,arr){
formData.append('file', value.files[0]);
});
fetch("/file/upload", {
method: 'POST',
body: formData
})
.then((response) => response.json())
.then((result) => {
console.log('Success:', result);
})
.catch((error) => {
console.error('Error:', error);
});
}
</script>
@SuppressWarnings("unchecked")
@RequestMapping(value = "/upload")
@ResponseBody
public <T> T fileUpload(@RequestParam("file") MultipartFile[] files, HttpServletRequest req, Model model) {
Map<String, String> map = new HashMap<String, String>();
map.put("result", "failed!!");
for (int i = 0; i < files.length; i++) {
MultipartFile file = files[i];
String name = file.getOriginalFilename();
try {
byte[] bytes = file.getBytes();
File dir = new File("D:/logs");
if (!dir.exists())
dir.mkdirs();
File serverFile = new File(dir.getAbsolutePath() + File.separator + name);
BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(serverFile));
stream.write(bytes);
stream.close();
} catch (Exception e) {
return (T)map;
}
}
map.put("result", "success");
return (T)map;
}