<iframe>을 이용해서 화면의 이동 없이 첨부파일을 처리하는 방식<form action="uploadFormAction" method="post" enctype="multipart/form-data">
public void uploadFormPost(MultipartFile[] uploadFile, Model model)
{
for (MultipartFile multipartFile : uploadFile)
{
File saveFile = new File(uploadFolder, multipartFile.getOriginalFilename());
multipartFile.transferTo(saveFile); // 파일저장
}
}
<input type='file'>을 이용하고 Ajax로 처리하는 방식<input type="file" name="uploadFile" multiple>
<button id="uploadBtn">Upload</button>
let formData = new FormData();
const inputFile = document.querySelector("input[name='uploadFile']");
let files= inputFile.files;
for(let i = 0; i < files.length; i++) {
formData.append("uploadFile", files[i]);
}
fetch("/uploadAjaxAction",{
method: "POST",
body: formData
})
.then(response => alert("Uploaded"));
public void uploadAjaxPost(MultipartFile[] uploadFile)
{
String uploadFolder = "C:\\\\upload";
for(MultipartFile multipartFile : uploadFile)
{
String uploadFileName = multipartFile.getOriginalFilename();
// IE는 파일 경로까지 가지고 옴
uploadFileName = uploadFileName.substring(uploadFileName.lastIndexOf("\\\\") + 1);
File saveFile = new File(uploadFolder, uploadFileName);
multipartFile.transferTo(saveFile); // 파일저장
}
}
const regex = new RegExp("(.*?)\\.(exe|sh|zip|alz)$");
const maxSize = 5242880; // 5MB
const checkExtenstion = (fileName, fileSize) => {
if(fileSize >= maxSize) return false;
if(regex.test(fileName)) return false;
return true;
}
중복된 이름의 파일 처리