상세 컨텐츠

본문 제목

WYSIWYG 에디터 CKEditor4 이미지 업 설정

스프링

by e7e 2022. 4. 29. 08:36

본문

https://ckeditor.com/ckeditor-4/download/ 에 가서 Standard Package 바더 주세용

CDN을 써도 아마 저는 상관 없어요, CKEditor5는 쪼메 더 있다가 쓰세요, 그럴 이유가 있어요

 

servlet-context.xml

	<!-- 꼭 필요한 건 아닌 데 이런 것도 Bean이 된다는 걸 확인 차원에서 -->
    <beans:bean id="uploadPath" class="java.lang.String">
		<beans:constructor-arg value="어쩌구 절대경로/webapp/resources폴더경로 카복해주삼"/>
	</beans:bean>

	<!-- 이것도 꼭 필요한 건 아니지만 그냥 확인 차원에성 -->
    <resources mapping="/ckUpload/**" location="/resources/ckUpload/" />

Jacson도 이미 있고, multipart-config도 했으므로 더 필요한 건 없어 보임

 

다음은 얼렁뚱당 jsp를 맹글어 초간단 CKEditor를 설쩡

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="<%=request.getContextPath()%>/resources/ckeditor/ckeditor.js"></script>
<script>
</script>
</head>
<body>
	<textarea name="nm_ta" id="id_ta"></textarea>
	<script>
		CKEDITOR.replace("nm_ta",{
			 enterMode : CKEDITOR.ENTER_BR,
			 filebrowserUploadMethod : "form",  // 빠트려면 당황스런 상황
			 filebrowserUploadUrl: "<%=request.getContextPath()%>/ckUpload"
		})
	</script>
</body>
</html>

CKEditor 이미지 업로드 대항을 위해 컨뜨롤러를 맹금

@Controller
@Slf4j
public class CkUploadController {

	@Autowired
	private String uploadPath;
	
	@PostMapping(value="/ckUpload",produces = "text/html;charset=utf-8")
	@ResponseBody
	public String ckUpload2(HttpServletRequest req,
			             HttpServletResponse res,
			             MultipartFile upload) throws Exception {
		
		log.info(upload.getOriginalFilename());
		
        
        //아래 코드로 이클립스가 실제로 가져오는 디렉토리 확인
        //window의 mklink명령어를 활용하면 eclipse에서도 확인
        String ress = req.getSession().getServletContext().getRealPath("/resources");
        log.debug("resource:" + ress);
        String webinf = req.getSession().getServletContext().getRealPath("/WEB-INF");
        log.debug("WEB-INF:"+ webinf);
        				
		String fileName = upload.getOriginalFilename();
		
		String ckUploadPath = uploadPath + "/" + "ckUpload" + "/" + fileName;
	    upload.transferTo(new File(ckUploadPath));
				
		String callback = req.getParameter("CKEditorFuncNum");
		
		String fileUrl = req.getContextPath() + "/ckUpload/" + fileName;
		
        /* CKEditor가 원하는 스크립트 문자열을 리턴(아님말공)  */
		String scriptStr = "<script type='text/javascript'>"
				+ "window.parent.CKEDITOR.tools.callFunction("
				+ callback + ",'" + fileUrl+"','이미지 업')"
				+ "</script>";
	
		return scriptStr;
    }
}

D:\myworkspace2\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\SiteMesh2\resources

 

 

mklink는 관리자 권한 필요

mklink /d ckUpload D:\myworkspace2\SiteMesh2\src\main\webapp\resources\ckUpload

 

security 설정 되어 있을 경우  security ajax로 검색해서 해결하삼

'스프링' 카테고리의 다른 글

체크  (2) 2022.05.02
추가 기본 annotation  (2) 2022.04.29
초간단 WebSocket 채팅  (16) 2022.04.28
MVC이해  (0) 2022.04.27
HttpClient  (5) 2022.04.27

관련글 더보기