CKEditor的使用,並實現圖片上傳


ckeditor是一款富文本編輯器,類似於論壇帖子下邊的回復輸入框。


1、先要下載相應js文件,點我下載。根據自己的需求選擇插件的豐富程度,下載后解壓得到一個文件夾,放到webRoot目錄下。

2、在jsp頁面或html頁面引入核心js。

<script type="text/javascript" src="ckeditor/ckeditor.js"></script>

 

3、在需要引入富文本的地方加入一個textarea標簽。

<textarea name="ckeditor"></textarea></td>

 

4、注意name屬性,然后在頁面中加下下面js代碼,效果就出來了。

 

<script>
    CKEDITOR.replace('ckeditor'});
</script>

 

5、很簡單,但是此時我們發現,編輯器上的上傳圖片功能沒有。所以代碼需要改成下面這樣。

 

<script>
    CKEDITOR.replace('ckeditor',{   
        filebrowserImageUploadUrl : '${ctx}/uploadImg/uploadImg',  
        language : 'zh-cn',  
    });
</script>

 

6、這里的filebrowserImageUploadUrl 是我寫的一個上傳圖片的接口,代碼如下。

 1 @Controller
 2 @RequestMapping("uploadImg")
 3 public class FileUploadController {
 4     /*
 5      * 圖片命名格式
 6      */
 7     private static final String DEFAULT_SUB_FOLDER_FORMAT_AUTO = "yyyyMMddHHmmss";
 8 
 9     protected Logger logger = Logger.getLogger(FileUploadController.class);
10 
11     /*
12      * 上傳圖片文件夾
13      */
14     private static final String UPLOAD_PATH = "/upload/CKimg/";
15 
16     /*
17      * 上傳圖片
18      */
19     @RequestMapping(value = "uploadImg")
20     public void uplodaImg(@RequestParam("upload") MultipartFile file,//
21             HttpServletRequest request, //
22             HttpServletResponse response)//
23     {
24 
25         try {
26 
27             String proPath = request.getSession().getServletContext()
28                     .getRealPath("/");
29             String proName = request.getContextPath();
30             String path = proPath + UPLOAD_PATH;
31             PrintWriter out = response.getWriter();
32             String CKEditorFuncNum = request.getParameter("CKEditorFuncNum");
33             String fileName = file.getOriginalFilename();
34             String uploadContentType = file.getContentType();
35             String expandedName = "";
36             if (uploadContentType.equals("image/pjpeg")
37                     || uploadContentType.equals("image/jpeg")) {
38                 // IE6上傳jpg圖片的headimageContentType是image/pjpeg,而IE9以及火狐上傳的jpg圖片是image/jpeg
39                 expandedName = ".jpg";
40             } else if (uploadContentType.equals("image/png")
41                     || uploadContentType.equals("image/x-png")) {
42                 // IE6上傳的png圖片的headimageContentType是"image/x-png"
43                 expandedName = ".png";
44             } else if (uploadContentType.equals("image/gif")) {
45                 expandedName = ".gif";
46             } else if (uploadContentType.equals("image/bmp")) {
47                 expandedName = ".bmp";
48             } else {
49                 out.println("<script type=\"text/javascript\">");
50                 out.println("window.parent.CKEDITOR.tools.callFunction("
51                         + CKEditorFuncNum + ",'',"
52                         + "'文件格式不正確(必須為.jpg/.gif/.bmp/.png文件)');");
53                 out.println("</script>");
54                 return;
55             }
56             if (file.getSize() > 1024 * 1024 * 2) {
57                 out.println("<script type=\"text/javascript\">");
58                 out.println("window.parent.CKEDITOR.tools.callFunction("
59                         + CKEditorFuncNum + ",''," + "'文件大小不得大於2M');");
60                 out.println("</script>");
61                 return;
62             }
63             DateFormat df = new SimpleDateFormat(DEFAULT_SUB_FOLDER_FORMAT_AUTO);
64             fileName = df.format(new Date()) + expandedName;
65             file.transferTo(new File(path + "/" + fileName));
66             out.println("<script type=\"text/javascript\">");
67             out.println("window.parent.CKEDITOR.tools.callFunction("
68                     + CKEditorFuncNum + ",'" + proName + "/upload/CKimg/"
69                     + fileName + "','')");
70             out.println("</script>");
71             return;
72         } catch (IllegalStateException e) {
73             e.printStackTrace();
74         } catch (IOException e) {
75             e.printStackTrace();
76         } catch (Exception e) {
77             e.printStackTrace();
78         }
79     }

 

至此,所有功能都已經實現。

 
 
 
 
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM