CKEditor实现图片上传

本人用的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中的上传方法:

public class ImageUpload extends WebSupport {
    private File upload;       //文件
    private String uploadContentType;   //文件类型
    private String uploadFileName;       //文件名
    /**
     * 图片上传
     * @return
     * @throws IOException
     */
    public String fileUpload() throws IOException{
        //HttpServletResponse response = ServletActionContext.getResponse();
        getResponse().setCharacterEncoding("utf-8");
        PrintWriter out =  getResponse().getWriter();
        // CKEditor提交的很重要的一个参数
        String callback = getRequest().getParameter("CKEditorFuncNum");
        String expandedName = "";  //文件扩展名
        if (uploadContentType.equals("image/pjpeg") || uploadContentType.equals("image/jpeg")) {
            //IE6上传jpg图片的headimageContentType是image/pjpeg,而IE9以及火狐上传的jpg图片是image/jpeg
            expandedName = ".jpg";
        }else if(uploadContentType.equals("image/png") || uploadContentType.equals("image/x-png")){
            //IE6上传的png图片的headimageContentType是"image/x-png"
            expandedName = ".png";
        }else if(uploadContentType.equals("image/gif")){
            expandedName = ".gif";
        }else if(uploadContentType.equals("image/bmp")){
            expandedName = ".bmp";
        }else{
            out.println("<script type=\"text/javascript\">");
            out.println("window.parent.CKEDITOR.tools.callFunction(" + callback + ",‘‘," + "‘文件格式不正确(必须为.jpg/.gif/.bmp/.png文件)‘);");
            out.println("</script>");
            return null;
        }
        if(upload.length() > 600*1024){
            out.println("<script type=\"text/javascript\">");
            out.println("window.parent.CKEDITOR.tools.callFunction(" + callback + ",‘‘," + "‘文件大小不得大于600k‘);");
            out.println("</script>");
            return null;
        }    

        InputStream is = new FileInputStream(upload);
        String uploadPath = ServletActionContext.getServletContext().getRealPath("/img/uploadImg");
        String fileName = java.util.UUID.randomUUID().toString();  //采用时间+UUID的方式随即命名
        fileName += expandedName;
        File file = new File(uploadPath);
        if(!file.exists()){  //如果路径不存在,创建
            file.mkdirs();
        }
        File toFile = new File(uploadPath, fileName);
        OutputStream os = new FileOutputStream(toFile);
        byte[] buffer = new byte[1024];
        int length = 0;
        while ((length = is.read(buffer)) > 0) {
            os.write(buffer, 0, length);
        }
        is.close();
        os.close();    

        // 返回"图像"选项卡并显示图片
        out.println("<script type=\"text/javascript\">");
        out.println("window.parent.CKEDITOR.tools.callFunction(" + callback + ",‘" + "/eHomePlus/img/uploadImg" + fileName + "‘,‘‘)");
        out.println("</script>");
        return null;
    }
    public File getUpload() {
        return upload;
    }
    public void setUpload(File upload) {
        this.upload = upload;
    }
    public String getUploadContentType() {
        return uploadContentType;
    }
    public void setUploadContentType(String uploadContentType) {
        this.uploadContentType = uploadContentType;
    }
    public String getUploadFileName() {
        return uploadFileName;
    }
    public void setUploadFileName(String uploadFileName) {
        this.uploadFileName = uploadFileName;
    }
}

config.js

CKEDITOR.editorConfig = function( config ) {
    config.filebrowserImageUploadUrl = "admin/UserArticleFileUpload.do"; //固定路径
    config.image_previewText=‘ ‘; //预览区域显示内容
};

最后上传图片成功

本文转自:http://blog.csdn.net/itmyhome1990/article/details/17264627

参考文章:http://blog.csdn.net/mydwr/article/details/8669594

时间: 2024-10-24 00:30:34

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

项目整合ckeditor实现图片上传到远程服务器

最近手头上的一个Java项目需要做一个门户网站,其中有一个模块就是用来发布最新的业界安全动态的模块,因此需要用到后台发布新闻的功能:刚开始的时候在网上搜了一下,大部分都是关于PHP和.NET的,关于Java不多,而且查到的都是说用ckeditor+ckfinder来实现,ckeditor实现文本的编辑,ckfinder实现图片的上传,刚开始我也是准备用ckeditor+ckfinder来实现的,但是后来研究ckfinder的时候不知道如何配置ckfinder的图片上传路径问题,网上可以找到好多例

struts2+ckeditor配置图片上传

又是一个漫漫长夜. 公司的编辑器坏了,用的是百度编辑器,上传图片的网址被框架给拦截了,我们本地怎么测试都没问题,放到服务器就这样了.和老李找了半天,疯了,没原因的. 笔者以前用过jsp+ckeditor,觉得里面上传功能挺好用,于是想出这个法子,把网站的编辑器换掉. 用的是最新的版本的,4点几的.很有wordpress的感觉,不知道是不是一家的.先预览一下: 代码: package action; import java.io.File; import java.io.FileInputStre

CKEditor实现图片上传,并且回调图片路径

CKEditor编辑器的工具栏中初始的时候应该是这样子的,没有图片上传按钮 并且预览中有一堆火星文,可以修改相应配置删除它. 第一种方法:打开ckeditor/plugins/image/dialogs/image.js文件,搜索"b.config.image_previewText",(b.config.image_previewText||'')单引号中的内容全删了,注意别删多了.(由于ckeditor的很多js文件都是压缩过的,格式很难看,很容易删错,所以不推荐此种方法) 第二种

ckeditor4.5.1配置图片上传的方法

本篇博文主要面向初学者,一步一步地实现ckeditor的图片上传,欢迎各位大神指正. ckeditor的图片上传默认是关闭的,网上也有很多相关的教程,可是不是讲的不完整,就是版本太旧已经不适用.我写这篇博文主要面向初学者,有错误的地方欢迎指正. 截止本文撰写,ckeditor最新版本是4.5.1,我下载的版本是4.5.1standard,如果本文的方法不管用,请下载同一版本尝试. 1.开启图片上传界面 文件地址:ckeditor/plugins/image/dialogs/image.js 搜索

.net core CKEditor 图片上传

最近在玩 asp.net core,不想用UEditor,想使用CKEditor.故需要图片上传功能. 废话不多说,先上效果图: CKEditor 前端代码: <text id="content" name="content"></text> <script> CKEDITOR.replace('content'); </script> CKeditor config.js 配置代码:需要配置图片上传路径 CKEDIT

CKEditor图片上传实现详细步骤(使用Struts 2)

本人使用的CKEditor版本是3.6.3.CKEditor配置和部署我就不多说. CKEditor的编辑器工具栏中有一项"图片域",该工具可以贴上图片地址来在文本编辑器中加入图片,但是没有图片上传. "预览"中有一大堆鸟语,看得很不爽.可以打开ckeditor/plugins/image/dialogs/image.js文件,搜索"b.config.image_previewText"就能找到这段鸟语了,(b.config.image_prev

SpringMVC:学习笔记(10)——整合Ckeditor且实现图片上传

搞清楚路径位置 配置CKEDITOR 精简文件 解压之后可以看到ckeditor/lang下面有很多语言的js,如果不需要那么多种语言的,可以只剩下en.js,zh.js,zh-cn.js 图片上传时图像信息中的预览会显示一堆英文信息,会干扰预览.找到ckeditor/plugins/image/dialogs/image.js,搜索"d.config.image_previewText"就能找到这段鸟语了,(d.config.image_previewText||")引号中

CKEditor不借助CKFinder实现图片上传(.net版 ashx实现)

参考博客:http://blog.csdn.net/mydwr/article/details/8669594 本人版本:4.4.6 打开文件:ckeditor/plugins/image/dialogs/image.js 搜索内容:[c.config.image_previewText],并删掉其后引号内的内容. 删除后格式:[c.config.image_previewText||""]. 与原文差异:原内容原文中是[b.config.image_previewText],我这里是

Drupal 7 配置ckeditor和ckfinder编辑器实现图片上传--不用wysisyg

注意: 1.这里的ckeditor编辑器是独立模块,不是那个wysiwyg模块. 2.这里的图片上传仅仅为文章内图片,非字段图片. 1.下载文件(1) http://drupal.org/project/ckeditor drupal的ckeditor模块(2) http://ckeditor.com/download CKeditor源码(3) http://ckfinder.com/download CKfinder(注意,不是免费的) 将ckedit文件夹放置在/sites/all/mod