`
bosschen
  • 浏览: 197343 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

CKEditor图片上传实现详细步骤(3.6.3)

 
阅读更多
本文转自:http://www.cnblogs.com/wangyhua/p/4050563.html
担心对方删帖,所以自己抄一份备用。
本人使用的CKEditor版本是3.6.3CKEditor配置和部署我就不多说。

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



 

“预览”中有一大堆鸟语,看得很不爽。可以打开ckeditor/plugins/image/dialogs/image.js文件,搜索“b.config.image_previewText”就能找到这段鸟语了,(b.config.image_previewText||'')单引号中的内容全删了,注意别删多了。

扫除这个障碍,下面来研究图片上传。

 

step 1:

首先,还是image.js这个文件,搜索“upload”可以找到这一段

id:'Upload',hidden:true

实际上上传功能被隐藏了,把上面的true改成false,再打开编辑器,就能找到上传功能了。



 

step 2:

上面的只是一个上传页面。也就相当于一个HTMLform表单,要配置点击“上传到服务器上”按钮后请求的Action。可以在ckeditor/config.js中配置。

加入:

config.filebrowserUploadUrl="actions/ckeditorUpload";

"ckeditorUpload"是请求的URL,也就是点击这个按钮就会post到ckeditorUpload地址进行处理,这里指向的是Struts 2的一个Action。当然,也可以用servlet或者ASPPHP等来处理请求。

 

[html] view plaincopy
 
  1. <package name="actions" extends="struts-default" namespace="/actions">  
  2.   <action name="ckeditorUpload" class="com.xxx.CkeditorUpload ">  
  3.   </action>  
  4. </package>  

 

 

step 3:

文件上传的控件相当于<input  type="file" name="upload" .../>,其nameupload,知道了name那么就可以在Action中获取这个文件。

 

  1. private File upload;  //文件  
  2. private String uploadContentType;  //文件类型  
  3. private String uploadFileName;   //文件名  

 

以上三个私有变量都要有set方法。如果不了解的话可以先学习一下Struts 2文件上传。

 

step 4:

如果上传的图片格式不正确,可以在上传界面进行提示。



 

这个提示不是ckeditor提示的,要在Action中响应。

 

[java] view plaincopy
 
  1. String callback = ServletActionContext.getRequest().getParameter("CKEditorFuncNum");   
  2. if([判断条件]){  
  3.     out.println("<script type=\"text/javascript\">");    
  4.     out.println("window.parent.CKEDITOR.tools.callFunction(" + callback + ",''," + "'文件格式不正确(必须为.jpg/.gif/.bmp/.png文件)');");   
  5.     out.println("</script>");  
  6.     return null;  
  7. }  

 

 

step 5:

 

[java] view plaincopy
 
  1. InputStream is = new FileInputStream(upload);  
  2. String uploadPath = ServletActionContext.getServletContext().getRealPath("/img/postImg");  
  3. String fileName = java.util.UUID.randomUUID().toString();  //采用UUID的方式随即命名  
  4. fileName += expandedName;  // 加上后缀名  
  5. File toFile = new File(uploadPath, fileName);  
  6. OutputStream os = new FileOutputStream(toFile);     
  7. byte[] buffer = new byte[1024];     
  8. int length = 0;  
  9. while ((length = is.read(buffer)) > 0) {     
  10.     os.write(buffer, 0, length);     
  11. }     
  12. is.close();  
  13. os.close();  

这段代码是Struts 2上传图片的核心代码,把图片上传后保存在项目的某个目录下,并随机重命名。

 

step 6:

图片上传成功,在目录下也可以看到图片,至此图片上传成功。但是如何将图片发到编辑器中呢?

点“确定”按钮会有以下提示。



 

到这里,要在Action中返回一段JS脚本

 

[java] view plaincopy
 
  1. String callback =ServletActionContext.getRequest().getParameter("CKEditorFuncNum");   
  2. out.println("<script type=\"text/javascript\">");  
  3. out.println("window.parent.CKEDITOR.tools.callFunction("+ callback + ",'" +"img/postImg/"+ fileName + "','')");   
  4. out.println("</script>");  

 

 

 

有了这段代码,图片上传成功后,根据这里的

"img/postImg/" + filename

相对地址,就可以使用这个图片,直接转到“图像”页面。



 

 

附:Struts 2 Action代码

 

[java] view plaincopy
 
  1. package com.xxg.bbs.action;  
  2.   
  3. import java.io.File;  
  4. import java.io.FileInputStream;  
  5. import java.io.FileOutputStream;  
  6. import java.io.InputStream;  
  7. import java.io.OutputStream;  
  8. import java.io.PrintWriter;  
  9.   
  10. import javax.servlet.http.HttpServletResponse;  
  11.   
  12. import org.apache.struts2.ServletActionContext;  
  13.   
  14. import com.opensymphony.xwork2.ActionSupport;  
  15.   
  16. public class CkeditorUpload extends ActionSupport {  
  17.   
  18.     private File upload;  
  19.     private String uploadContentType;  
  20.     private String uploadFileName;  
  21.   
  22.   
  23.     public File getUpload() {  
  24.         return upload;  
  25.     }  
  26.   
  27.     public void setUpload(File upload) {  
  28.           
  29.         this.upload = upload;  
  30.     }  
  31.   
  32.     public String getUploadContentType() {  
  33.         return uploadContentType;  
  34.     }  
  35.   
  36.     public void setUploadContentType(String uploadContentType) {  
  37.         this.uploadContentType = uploadContentType;  
  38.     }  
  39.   
  40.     public String getUploadFileName() {  
  41.         return uploadFileName;  
  42.     }  
  43.   
  44.     public void setUploadFileName(String uploadFileName) {  
  45.         this.uploadFileName = uploadFileName;  
  46.     }  
  47.   
  48.     public String execute() throws Exception {  
  49.   
  50.         HttpServletResponse response = ServletActionContext.getResponse();  
  51.         response.setCharacterEncoding("GBK");  
  52.         PrintWriter out = response.getWriter();  
  53.   
  54.         // CKEditor提交的很重要的一个参数  
  55.         String callback = ServletActionContext.getRequest().getParameter("CKEditorFuncNum");   
  56.           
  57.         String expandedName = "";  //文件扩展名  
  58.         if (uploadContentType.equals("image/pjpeg") || uploadContentType.equals("image/jpeg")) {  
  59.             //IE6上传jpg图片的headimageContentType是image/pjpeg,而IE9以及火狐上传的jpg图片是image/jpeg  
  60.             expandedName = ".jpg";  
  61.         }else if(uploadContentType.equals("image/png") || uploadContentType.equals("image/x-png")){  
  62.             //IE6上传的png图片的headimageContentType是"image/x-png"  
  63.             expandedName = ".png";  
  64.         }else if(uploadContentType.equals("image/gif")){  
  65.             expandedName = ".gif";  
  66.         }else if(uploadContentType.equals("image/bmp")){  
  67.             expandedName = ".bmp";  
  68.         }else{  
  69.             out.println("<script type=\"text/javascript\">");    
  70.             out.println("window.parent.CKEDITOR.tools.callFunction(" + callback + ",''," + "'文件格式不正确(必须为.jpg/.gif/.bmp/.png文件)');");   
  71.             out.println("</script>");  
  72.             return null;  
  73.         }  
  74.           
  75.         if(upload.length() > 600*1024){  
  76.             out.println("<script type=\"text/javascript\">");    
  77.             out.println("window.parent.CKEDITOR.tools.callFunction(" + callback + ",''," + "'文件大小不得大于600k');");   
  78.             out.println("</script>");  
  79.             return null;  
  80.         }  
  81.           
  82.           
  83.         InputStream is = new FileInputStream(upload);  
  84.         String uploadPath = ServletActionContext.getServletContext()     
  85.                 .getRealPath("/img/postImg");  
  86.         String fileName = java.util.UUID.randomUUID().toString();  //采用时间+UUID的方式随即命名  
  87.         fileName += expandedName;  
  88.         File toFile = new File(uploadPath, fileName);  
  89.         OutputStream os = new FileOutputStream(toFile);     
  90.         byte[] buffer = new byte[1024];     
  91.         int length = 0;  
  92.         while ((length = is.read(buffer)) > 0) {     
  93.             os.write(buffer, 0, length);     
  94.         }     
  95.         is.close();  
  96.         os.close();  
  97.           
  98.         // 返回“图像”选项卡并显示图片  
  99.         out.println("<script type=\"text/javascript\">");    
  100.         out.println("window.parent.CKEDITOR.tools.callFunction(" + callback + ",'" + "img/postImg/" + fileName + "','')");    
  101.         out.println("</script>");  
  102.           
  103.         return null;  
  104.     }  
  • 大小: 37 KB
  • 大小: 27.3 KB
  • 大小: 33.9 KB
  • 大小: 31 KB
  • 大小: 67.2 KB
分享到:
评论

相关推荐

    CKEditor实现图片上传(使用Struts2)

    // 返回响应,告诉CKEditor上传成功 Map, Object&gt; response = new HashMap(); response.put("uploaded", 1); response.put("fileName", uploadFileName); return Action.SUCCESS; } ``` 别忘了在Struts2的配置...

    ckeditor 自己实现图片上传功能 和源代码

    为了实现图片上传,我们需要做以下步骤: 1. **添加上传按钮**:首先,你需要在CKEditor的工具栏上添加一个用于上传图片的按钮。这可以通过修改配置文件或者直接在初始化CKEditor时添加按钮代码实现。例如,你可以...

    Ckeditor上传图片实现

    Ckeditor上传图片!本身Ckeditor不具备上传图片功能的!前两天在一个博客园的一个博主那里讨了点Ckeditor上传图片的方法,现在共享给大家!博主的博客地址和实现方式我压缩在文件中了!大家支持正版哈!

    CKEditor 上传文件(Servlet实现)

    - "CKEditor上传文件Servlet版本1.0"这个压缩包可能包含了CKEditor的示例配置、Servlet的Java源代码、HTML页面和可能的web.xml配置文件。解压并根据这些文件进行部署和测试。 通过以上步骤,你可以成功地在...

    新版CKEditor实现图片上传,绝对靠谱

    近日要用到CKEditor实现图片上传,网上找了好多代码,要么跑不起来,要么不全,比如不知道如何返回值。跳了不少坑,现在彻底搞定。 目前上传用的是ASP.NET,可以随便切换成PHP、JAVA或其它的语言 只需要把ckeditor...

    ckeditor 自定义上传图片

    通过研究这些文件,开发者可以深入理解ckeditor与ASP.NET的交互,学习如何在实际项目中实现自定义图片上传功能。记住,安全性和用户体验是设计这类功能时必须考虑的关键因素。在处理用户上传的文件时,确保对文件...

    ckeditor图片上传 远程图片下载

    CKEditor的图片上传功能通常涉及到以下几个关键步骤: 1. **配置**:首先,你需要在CKEditor的配置文件中设置允许图片上传的相关参数,如上传路径、文件类型限制、大小限制等。可以通过`config....

    整合ckeditor+ckfinder实现图片或文件上传功能

    本文将详细介绍如何在JAVA工程中整合这两款工具,实现图片和文件的上传功能。 首先,我们需要了解`ckeditor`的基本使用。`ckeditor`提供了丰富的文本编辑功能,包括字体、字号、颜色、对齐方式等设置,以及插入图片...

    ckeditor 图片多张图片上传 以及增删查改

    在本文中,我们将深入探讨CKEditor如何实现图片的多张上传功能,并结合ASP.NET MVC框架进行数据库操作,包括增、删、查、改等基本功能。 首先,CKEditor的图片上传功能通常通过其插件`CKFinder`实现。`CKFinder`是...

    CKEditor实现本地视频和图片的上传功能

    本教程将详细讲解如何在CKEditor中实现本地视频和图片的上传功能,而不依赖于kfinal这样的第三方工具。 首先,我们需要在项目中引入CKEditor。可以通过官方下载页面获取最新版本的CKEditor,或者通过npm、yarn等包...

    ckeditor 图片图片本地上传

    在"ckeditor 图片图片本地上传"这个主题中,我们将深入探讨如何在CKEditor中实现图片的本地上传功能,这通常涉及到服务器端的处理,如Servlet。 首先,我们需要理解CKEditor的图片上传机制。CKEditor通过内置的文件...

    ckeditor整合图片上传

    本文将深入探讨如何将CKEditor与图片上传功能整合,以实现用户在编辑过程中直接上传图片。 一、CKEditor简介 CKEditor是一款功能强大的在线文本编辑器,支持多种语言,广泛用于网站内容管理、论坛和博客等。它提供...

    ckeditor上传图片

    CKEditor是一款广泛使用的开源富...以上就是关于"ckeditor上传图片"这一主题的详细解析,涵盖了前后端的交互、图片上传的处理流程以及相关配置。理解这些知识点,可以帮助你有效地实现在CKEditor中集成图片上传功能。

    CKEditor 控制图片上传

    总结起来,实现CKEditor自主控制图片上传并记录到数据库的过程包括以下步骤: 1. 设置CKEditor配置,指定图片上传URL。 2. 创建后端处理页面(如`upimg.aspx`),处理图片上传请求,保存图片到服务器并返回URL。 3. ...

    PHPMyWind更换编辑器ckeditor批量上传图片

    总结一下,将CKEditor集成到PHPMyWind并实现批量上传图片的功能,主要包括以下几个步骤: 1. 下载并解压CKEditor文件,将其放置在项目适当位置。 2. 在后台编辑页面引入CKEditor,并配置图片浏览和上传的URL。 3. ...

    asp.net中Ckeditor上传图片

    下面将详细介绍如何在ASP.NET中配置CKEditor并实现图片上传。 首先,我们需要在项目中引入CKEditor。可以通过访问CKEditor官方网站下载最新版本的编辑器,然后将其解压并将所需的JavaScript和CSS文件添加到项目的...

    CKEditor图片上传处理处理文件(PHP)

    4. **响应构建**:一旦文件成功存储,`upload.php`需要返回一个JSON或XML格式的响应,告知CKEditor上传是否成功。响应应包含新文件的URL,以便CKEditor可以插入到编辑器内容中。 5. **错误处理**:如果在任何阶段...

    ckeditor 图片上传

    **ckeditor 图片上传** CKEditor 是一款非常流行的开源富文本编辑器,广泛应用于网页内容编辑。在CKEditor中实现图片上传功能是许多开发者在构建网站时必须面对的问题。本篇文章将深入探讨如何在CKEditor中集成图片...

    asp.net 使用ckeditor5富文本编辑器包含图片上传全部代码

    本文将详细介绍如何在ASP.NET环境中集成CKEditor5并实现图片上传功能。 首先,我们需要在项目中引入CKEditor5的相关库。这通常通过NuGet包管理器完成,搜索"CKEditor.NET"或"CKEditor5",安装对应的包。安装完成后...

    ckeditor批量上传图片--demo

    在实现CKEditor批量上传图片时,以下是一些关键步骤: 1. **安装CKEditor**:首先确保你已经在项目中安装了CKEditor。你可以从CKEditor官方网站下载合适的版本,或者通过npm或yarn等包管理工具进行安装。 2. **...

Global site tag (gtag.js) - Google Analytics