ckeditor上传图片

ckeditor版本4.4.7

CKEditor的编辑器工具栏中有一项“图片域”,该工具可以贴上图片地址来在文本编辑器中加入图片,但是没有图片上传功能。

去掉预览中的英文 ,在ckeditor/config.js中加上一个配置项:

config.image_previewText = ‘ ‘; 注意引号里面一定要有个空格,不能是空字符串。

图片上传实现

第一步:

要开启图片上传功能。

找到ckeditor/plugins/image/dialogs/image.js这个文件,CTRL+F搜索下面一段JS:

id:‘Upload‘,hidden:!0    把感叹号去掉


这个时候编辑器上已经有上传功能了

第二步:(这里用struct2实现上传)

下面是action的代码

  1. package com.sdhf.eam.web.action;
  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.FileOutputStream;
  5. import java.io.InputStream;
  6. import java.io.OutputStream;
  7. import java.io.PrintWriter;
  8. import javax.servlet.http.HttpServletResponse;
  9. import org.apache.struts2.ServletActionContext;
  10. import com.sdhf.action._BaseAction;
  11. public class CkeditorUploadAction extends _BaseAction{
  12. private File upload;
  13. private String uploadContentType;
  14. private String uploadFileName;
  15. public File getUpload() {
  16. return upload;
  17. }
  18. public void setUpload(File upload) {
  19. this.upload = upload;
  20. }
  21. public String getUploadContentType() {
  22. return uploadContentType;
  23. }
  24. public void setUploadContentType(String uploadContentType) {
  25. this.uploadContentType = uploadContentType;
  26. }
  27. public String getUploadFileName() {
  28. return uploadFileName;
  29. }
  30. public void setUploadFileName(String uploadFileName) {
  31. this.uploadFileName = uploadFileName;
  32. }
  33. public String execute() throws Exception {
  34. HttpServletResponse response = ServletActionContext.getResponse();
  35. response.setCharacterEncoding("GBK");
  36. PrintWriter out = response.getWriter();
  37. // CKEditor提交的很重要的一个参数
  38. String callback = ServletActionContext.getRequest().getParameter("CKEditorFuncNum");
  39. String expandedName = ""; // 文件扩展名
  40. if (uploadContentType.equals("image/pjpeg") || uploadContentType.equals("image/jpeg")) {
  41. // IE6上传jpg图片的headimageContentType是image/pjpeg,而IE9以及火狐上传的jpg图片是image/jpeg
  42. expandedName = ".jpg";
  43. } else if (uploadContentType.equals("image/png") || uploadContentType.equals("image/x-png")) {
  44. // IE6上传的png图片的headimageContentType是"image/x-png"
  45. expandedName = ".png";
  46. } else if (uploadContentType.equals("image/gif")) {
  47. expandedName = ".gif";
  48. } else if (uploadContentType.equals("image/bmp")) {
  49. expandedName = ".bmp";
  50. } else {
  51. out.println("<script type=\"text/javascript\">");
  52. out.println("window.parent.CKEDITOR.tools.callFunction(" + callback
  53. + ",‘‘,‘文件格式不正确(必须为.jpg/.gif/.bmp/.png文件)‘);");
  54. out.println("</script>");
  55. return null;
  56. }
  57. if (upload.length() > 600 * 1024) {
  58. out.println("<script type=\"text/javascript\">");
  59. out.println("window.parent.CKEDITOR.tools.callFunction(" + callback
  60. + ",‘‘," + "‘文件大小不得大于600k‘);");
  61. out.println("</script>");
  62. return null;
  63. }
  64. InputStream is = new FileInputStream(upload);
  65. String uploadPath = ServletActionContext.getServletContext().getRealPath("/images/ckeditor");
  66. String fileName = java.util.UUID.randomUUID().toString(); // 采用UUID的方式命名保证不会重复
  67. fileName += expandedName;
  68. File toFile = new File(uploadPath, fileName);
  69. OutputStream os = new FileOutputStream(toFile);
  70. // 文件复制到指定位置
  71. byte[] buffer = new byte[1024];
  72. int length = 0;
  73. while ((length = is.read(buffer)) > 0) {
  74. os.write(buffer, 0, length);
  75. }
  76. is.close();
  77. os.close();
  78. // 返回“图像”选项卡并显示图片
  79. out.println("<script type=\"text/javascript\">");
  80. out.println("window.parent.CKEDITOR.tools.callFunction(" + callback
  81. + ",‘"+ServletActionContext.getRequest().getContextPath()+"/images/ckeditor/"+ fileName + "‘,‘‘)"); // 相对路径用于显示图片
  82. out.println("</script>");
  83. return null;
  84. }
  85. }

这里有几个注意的地方:

1、 String uploadPath = ServletActionContext.getServletContext().getRealPath("/images/ckeditor");

"/images/ckeditor" 为服务器存放的目录,目录一定要存在,不然会报错

2、

这个是上传完后前台显示的路径,即下图

如果路径没有设置好,预览就会没有图片显示,如图

第三步:写xml配置文件,我这里是spring+struct2

applicationContext.xml文件加上

  1. <!-- ckeditor 图片上传action -->
  2. <bean id="ckeditorUpload" class="com.sdhf.eam.web.action.CkeditorUploadAction" parent="_baseAction"
  3. scope="prototype">
  4. </bean>

struts.xml文件加上

  1. <!-- CKEditor 上传图片 -->
  2. <action name="ckeditorUpload" class="ckeditorUpload" method="execute">
  3. </action>

第四步:

在ckeditor/config.js加上配置项

config.filebrowserUploadUrl = ctx+"/ckeditorUpload.action";

来自为知笔记(Wiz)

时间: 2024-10-13 21:03:47

ckeditor上传图片的相关文章

CKeditor上传图片的实现

原文:CKeditor上传图片的实现 源代码下载地址:http://www.zuidaima.com/share/1551734815624192.htm CKeditor上传图片的实现.很简单的一个例子.貌似是大二的时候写的吧- 浏览已上传的图片 选择已上传的图片 项目截图 java build path需要设置为自己的jdk

CKEditor上传图片—配置CKFinder(from www.sysoft.cc www.sysoft.net.cn)

CKEditor上传图片—配置CKFinder在网站开发中,如果有发布类似新闻的图文混排需求时,CKEditor不失为一个很好的选择,下载地址如下: http://ckeditor.com/download 它的前身是FCKEditor,随着它的更新,上传图片的功能被分离出去了,现在如果需要实现上传图片,要么自己写代码,还有一种方法是使用CKFinder,下载地址如下: http://ckfinder.com/download 下面详细描述一下使用它们的时候如何配置. CKEditor我下载的是

【CKeditor】使用SpringMVC处理CKeditor上传图片

0.了解CKeditor的相关文件 1.开启CKeditor上传图片功能 官方说明 简明的说,就是只需要在创建CKeditor时,添加以下两个配置: 在用CKEDITOR.replace()中配置 filebrowserBrowseUrl: '自定义的请求', filebrowserUploadUrl: '自定义的请求' 或,在config.js添加如下配置 config.filebrowserBrowseUrl='自定义的请求', config.filebrowserUploadUrl='自定

CKEditor上传图片—配置CKFinder

在网站开发中,如果有发布类似新闻的图文混排需求时,CKEditor不失为一个很好的选择,下载地址如下: http://ckeditor.com/download 它的前身是FCKEditor,随着它的更新,上传图片的功能被分离出去了,现在如果需要实现上传图片,要么自己写代码,还有一种方法是使用CKFinder,下载地址如下: http://ckfinder.com/download 下面详细描述一下使用它们的时候如何配置. CKEditor我下载的是3.6.4,CKFinder下载的是2.3 f

CKEditor 上传图片 MVC

1.点击上传图片,会看到如下图1,在预览中出现一段文字,在image.js中会找到该段文字,删掉即可.即可看到预览框中没有了这段文字.                    (1)                                                          (2)                                          (3) 2.好,现在准备开始添加上传功能,在“图像信息”与“链接”tab后还有一个上传Tab,同样在image.j

如何去除 ckeditor 上传图片后在原码中留下的 style=&quot;width: 100%;height:100px&quot;之类的代码呢?

ckeditor编辑器在上传图片的时候,会神奇的加上一段诡异的代码: 这导致上传的小图也是被拉伸到100%,我根本就没有定义它,找来找去也找不到element.style,原来这是在system.css这东西 最后, 加上这句: .cnt_text .text img {width :auto !important; max-width:660px;} 就可以了,优先级的问题

使用 CKEditor 上传图片, 粘贴屏幕截图

之前写过wangEditor,那真是好用,文档也清晰,半天就搞定了,无奈没有对应license,只好选择别的. 外语一般,阅读理解都靠蒙.CKEditor官方文档看的我云里雾里,国内的博客比较少,经过一天的调试,终于成功了. 记录下,欢迎交流. 1.下载CKEditor 包. 打开 samples 文件夹下的 index.html,确认ckeditor资源没有丢失. 2.初始化CKEditor. html: 注意ID js: 3.配置config. 打开CKEditor文件夹下的config.j

记一次ckeditor上传图片到服务器问题

package com.util;import java.io.IOException; import java.io.PrintWriter; import java.util.List; import java.io.File; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import ja

为CKEDITOR内容中图片加上 图片服务器路径

做网站的时候,前台和后台是分开的, 用了CKEDITOR上传图片,但是发现内容带图片的时候,前台Web浏览的时候是一个红X,一看路径不对,上传的到数据库中的是相对的虚拟路径,例如:<img src="/uploadFile/images/Penguins.jpg" style="height:600px; width:800px" />,需要加上图片服务器.或者是后台服务器的域名. 想了各种方法都没用一个好用的,后来想到了替换或者加上一个域名到路径前面,