# JavaScripy
멀티파트 데이터에 담아 파일을 컨트롤러로 전송하고 컨트롤러는 uploader 클래스를 통해 URL을 반환한다.
반환된 URL로 썸머노트에서 자체적으로 제공하는 기능이 img 태그를 만들어준다.
$(function () {$('#faqContent').summernote({callbacks: {onImageUpload: function (files) {uploadSummernoteImageFile(files[0], this);},onPaste: function (e) {var clipboardData = e.originalEvent.clipboardData;if (clipboardData && clipboardData.items && clipboardData.items.length) {var item = clipboardData.items[0];if (item.kind === 'file' && item.type.indexOf('image/') !== -1) {e.preventDefault();}}}}
});
function uploadSummernoteImageFile(file, editor) {let data = new FormData();data.append("file", file);
$.ajax({data: data,type: "POST",url: "./imageFile",contentType: false,processData: false,success: function (url) {$(editor).summernote('insertImage', url);}});}});
# Controller
produces 안넣어주면 한글 깨집니다.
@ResponseBody
@RequestMapping(value = "/imageFile", method=RequestMethod.POST, produces = "text/html;charset=utf-8")
public String add(@RequestParam(value = "file") MultipartFile file) {
String URL = null;
Uploader<Attach> ImageUploader = new Uploader<>();
try {
URL = ImageUploader.makeURL(file, "Image");
} catch (Exception e) {
e.printStackTrace();
return "fail";
}
return URL;
}
# Uploader
public String makeURL(MultipartFile file,String folder) throws Exception {
String fileName = file.getOriginalFilename();
String result = null;
System.out.println(fileName);
if (!file.isEmpty()) {
String uuid = UUID.randomUUID().toString();
file.transferTo(new File(uploadPath + folder + "/" + uuid + "_" + fileName));
result = "/upload/" + folder + "/" + uuid + "_" + fileName;
}
return result;
}
'프로젝트' 카테고리의 다른 글
다중 파일 업로드 AJAX 구현 (0) | 2022.01.19 |
---|---|
스프링 프로젝트 기본 설정 (0) | 2021.12.27 |