프로젝트

Spring Summernote 이미지 업로드

fkavpfm 2022. 1. 24. 18:03

# 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