本人用的CKEditor版本为4.3 CKEditor配置和部署参考CKEditor4.x部署和配置
CKEditor编辑器的工具栏中初始的时候应该是这样子的,没有图片上传按钮

并且预览中有一堆火星文,可以修改相应配置删除它。
第一种方法:打开ckeditor/plugins/image/dialogs/image.js文件,搜索“b.config.image_previewText”,(b.config.image_previewText||'')单引号中的内容全删了,注意别删多了。(由于ckeditor的很多js文件都是压缩过的,格式很难看,很容易删错,所以不推荐此种方法)
第二种方法:打开config.js文件,加入下面一句话
config.image_previewText=' '; //预览区域显示内容

下面研究图片上传
要想出现上传按钮,两种方法
第一种:还是刚才那个image.js
搜索“upload”可以找到这一段 id:'Upload',hidden:true,而我使用的4.3的是

id:"Upload",hidden:!0,反正改为false就行了,(遗憾的是此种方法对我这个版本不起作用)
第二种:打开config.js文件,加入下面一句话
config.filebrowserImageUploadUrl= "admin/UserArticleFileUpload.do"; //待会要上传的action或servlet

OK现在基本上是下面这个样子的了

上面的只是一个上传页面。也就相当于一个HTML的form表单,
要配置点击"上传到服务器上"按钮后请求的Action。已在ckeditor/config.js中配置。
就是上面的 config.filebrowserImageUploadUrl = "admin/UserArticleFileUpload.do";
可使用chrome审查元素查看代码


接下来就是action中的上传方法:

  1. public class ImageUpload extends WebSupport {
  2. private File upload; //文件
  3. private String uploadContentType; //文件类型
  4. private String uploadFileName; //文件名
  5. /**
  6. * 图片上传
  7. * @return
  8. * @throws IOException
  9. */
  10. public String fileUpload() throws IOException{
  11. //HttpServletResponse response = ServletActionContext.getResponse();
  12. getResponse().setCharacterEncoding("utf-8");
  13. PrintWriter out = getResponse().getWriter();
  14. // CKEditor提交的很重要的一个参数
  15. String callback = getRequest().getParameter("CKEditorFuncNum");
  16. String expandedName = ""; //文件扩展名
  17. if (uploadContentType.equals("image/pjpeg") || uploadContentType.equals("image/jpeg")) {
  18. //IE6上传jpg图片的headimageContentType是image/pjpeg,而IE9以及火狐上传的jpg图片是image/jpeg
  19. expandedName = ".jpg";
  20. }else if(uploadContentType.equals("image/png") || uploadContentType.equals("image/x-png")){
  21. //IE6上传的png图片的headimageContentType是"image/x-png"
  22. expandedName = ".png";
  23. }else if(uploadContentType.equals("image/gif")){
  24. expandedName = ".gif";
  25. }else if(uploadContentType.equals("image/bmp")){
  26. expandedName = ".bmp";
  27. }else{
  28. out.println("<script type=\"text/javascript\">");
  29. out.println("window.parent.CKEDITOR.tools.callFunction(" + callback + ",''," + "'文件格式不正确(必须为.jpg/.gif/.bmp/.png文件)');");
  30. out.println("</script>");
  31. return null;
  32. }
  33. if(upload.length() > 600*1024){
  34. out.println("<script type=\"text/javascript\">");
  35. out.println("window.parent.CKEDITOR.tools.callFunction(" + callback + ",''," + "'文件大小不得大于600k');");
  36. out.println("</script>");
  37. return null;
  38. }
  39.  
  40. InputStream is = new FileInputStream(upload);
  41. String uploadPath = ServletActionContext.getServletContext().getRealPath("/img/uploadImg");
  42. String fileName = java.util.UUID.randomUUID().toString(); //采用时间+UUID的方式随即命名
  43. fileName += expandedName;
  44. File file = new File(uploadPath);
  45. if(!file.exists()){ //如果路径不存在,创建
  46. file.mkdirs();
  47. }
  48. File toFile = new File(uploadPath, fileName);
  49. OutputStream os = new FileOutputStream(toFile);
  50. byte[] buffer = new byte[1024];
  51. int length = 0;
  52. while ((length = is.read(buffer)) > 0) {
  53. os.write(buffer, 0, length);
  54. }
  55. is.close();
  56. os.close();
  57.  
  58. // 返回"图像"选项卡并显示图片
  59. out.println("<script type=\"text/javascript\">");
  60. out.println("window.parent.CKEDITOR.tools.callFunction(" + callback + ",'" + "/eHomePlus/img/uploadImg" + fileName + "','')");
  61. out.println("</script>");
  62. return null;
  63. }
  64. public File getUpload() {
  65. return upload;
  66. }
  67. public void setUpload(File upload) {
  68. this.upload = upload;
  69. }
  70. public String getUploadContentType() {
  71. return uploadContentType;
  72. }
  73. public void setUploadContentType(String uploadContentType) {
  74. this.uploadContentType = uploadContentType;
  75. }
  76. public String getUploadFileName() {
  77. return uploadFileName;
  78. }
  79. public void setUploadFileName(String uploadFileName) {
  80. this.uploadFileName = uploadFileName;
  81. }
  82. }
 config.js
  1. CKEDITOR.editorConfig = function( config ) {
  2. config.filebrowserImageUploadUrl = "admin/UserArticleFileUpload.do"; //固定路径
  3. config.image_previewText=' '; //预览区域显示内容
  4. };
最后上传图片成功
本文转自:http://blog.csdn.net/itmyhome1990/article/details/17264627
参考文章:http://blog.csdn.net/mydwr/article/details/8669594

CKEditor实现图片上传的更多相关文章

  1. 使用struts2完成ckeditor和图片上传

    代码地址如下:http://www.demodashi.com/demo/12427.html 使用struts2完成ckeditor和ckeditor图片上传 ckeditor版本ckeditor_ ...

  2. ckeditor 实现图片上传以及预览(亲测有效)

    引用ckeditor <script type="text/javascript" src="static/ckeditor/ckeditor.js"&g ...

  3. struts2+ckeditor配置图片上传

    又是一个漫漫长夜. 公司的编辑器坏了,用的是百度编辑器,上传图片的网址被框架给拦截了,我们本地怎么测试都没问题,放到服务器就这样了.和老李找了半天,疯了,没原因的. 笔者以前用过jsp+ckedito ...

  4. CKEditor粘贴图片上传功能

    很多时候我们用一些管理系统的时候,发布新闻.公告等文字类信息时,希望能很快的将word里面的内容直接粘贴到富文本编辑器里面,然后发布出来.减少排版复杂的工作量. 下面是借用百度doc 来快速实现这个w ...

  5. WINDOW.PARENT.CKEDITOR.TOOLS.CALLFUNCTION 图片上传

    CKEDITOR  编辑器   图片上传 WINDOW.PARENT.CKEDITOR.TOOLS.CALLFUNCTION (CKEditorFuncNum,图片路径,返回信息); CKEditor ...

  6. CKEditor与dotnetcore实现图片上传

    CKEditor的使用 1.引入js库 <script src="https://cdn.ckeditor.com/4.6.1/standard-all/ckeditor.js&quo ...

  7. CKEditor图片上传问题(默认安装情况下编辑器无法处理图片),通过Base64编码字符串解决

    准备做一个文章内容网站,网页编辑器采用CKEditor,第一次用,默认安装情况下,图片无法插入,提示没有定义上传适配器(adapter),错误码提示如下: 根据提示,在官网看到有两种途径:一使用CKE ...

  8. ckeditor+jsp+spring配置图片上传

    CKEditor用于富文本输入是极好的,它还有一些插件支持扩展功能,其中图片上传就是比较常用到的.本文简单记录我的实现步骤. 1.CKEditor除了提供三种标准版压缩包下载,还可根据自己的需求进行个 ...

  9. 简单2步实现 asp.net mvc ckeditor 图片上传

    1.打开ckeditor 包下的  config.js,添加一句 配置(PS:ckeditor 很多功能都在该配置文件里配置),如下: config.filebrowserImageUploadUrl ...

随机推荐

  1. Android mtk单路录音问题

    在单路录音中,有两种情况导致底层录音资源被占用的问题: 1 开启vmLog后,拨打一个电话,挂断电话.如果挂断电话后,没有关闭vmlog进程,则会导致其它AP 无法得到底层的录音资源,从而无法录音. ...

  2. 【云计算】Netflix 开源持续交付平台 Spinnaker

    oschina        发布于: 2015年11月19日 (0评)          分享到:    收藏 +1 CDS首都在线全球云主机.全球私有网络,开工送礼,免费试用! »   日前,Ne ...

  3. 【JAVA、C++】LeetCode 015 3Sum

    Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all un ...

  4. Dijkstra最短路算法

    Dijkstra最短路算法 --转自啊哈磊[坐在马桶上看算法]算法7:Dijkstra最短路算法 上节我们介绍了神奇的只有五行的Floyd最短路算法,它可以方便的求得任意两点的最短路径,这称为“多源最 ...

  5. Android实现支持缩放平移图片

    本文主要用到了以下知识点 Matrix GestureDetector 能够捕捉到长按.双击 ScaleGestureDetector 用于检测缩放的手势 自由的缩放 需求:当图片加载时,将图片在屏幕 ...

  6. cocos2dx实现经典飞机大战

    游戏开始层 #ifndef __LayerGameStart_H__ #define __LayerGameStart_H__ #include "cocos2d.h" USING ...

  7. zabbix_agent key 传递参数

    root@(none):/etc/zabbix/zabbix_agentd.conf.d# pwd /etc/zabbix/zabbix_agentd.conf.d root@(none):/etc/ ...

  8. CI如何接受POST请求中的JSON数据

    PHP默认只识别application/x-www.form-urlencoded标准的数据类型 “php://input可以读取没有处理过的POST数据.相较于$HTTP_RAW_POST_DATA ...

  9. 设计模式学习之抽象工厂(Abstract Factory,创建型模式)(3)

    假如我们的苹果和香蕉还分为北方的和南方的,那么苹果Apple和香蕉Banana就是抽象类了,所以采集的方法就应该抽象的 第一步: 我们会创建北方的苹果NorthApple类和SourthBanana类 ...

  10. C# 如何判断系统是否是静音

    推荐的方法,使用CoreAudioApi.dll,仅在win7上测试过: private MMDevice defaultDevice = null; //判断当前系统扬声器状态 private bo ...