ckedit 浏览图片和上传图片

简介: <head>标签内引入<script src="${ctx}/ckeditor/ckeditor.js" type="text/javascript"></script>config.js配置文件CKEDITOR.editorConfig = function( config ) { // Define changes to default con


<head>标签内引入

<script src="${ctx}/ckeditor/ckeditor.js" type="text/javascript"></script>

config.js配置文件

CKEDITOR.editorConfig = function( config ) {
 // Define changes to default configuration here. For example:
 config.language = 'zh-cn';
 config.uiColor = '#AADC6E';
 config.image_previewText=' '; //预览区域显示内容  
 
 config.filebrowserWindowWidth = '440';      
 config.filebrowserWindowHeight = '500';
    config.filebrowserImageUploadUrl = 'upload.action';
    //定义图片上传的action   
    config.filebrowserImageBrowseUrl = 'browse.action?type=images';  
    //定义浏览服务器图片的页面 
};


浏览服务器图片页面代码browse.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
 pageEncoding="UTF-8"%>
<%@page import="java.io.File"%>
<script type="text/javascript">
 //这段函数是重点,不然不能和CKEditor互动了
 function funCallback(funcNum, fileUrl) {
  var parentWindow = (window.parent == window) ? window.opener
    : window.parent;
  parentWindow.CKEDITOR.tools.callFunction(funcNum, fileUrl);
  window.close();
 }
</script>
<div>

 <%
  String path = request.getContextPath() + "/";
  String type = "";
  if (request.getParameter("type") != null)//获取文件分类         
   type = request.getParameter("type").toLowerCase() + "/";
  String clientPath = "ckeditor/uploader/upload/" + type;
  File root = new File(request.getSession().getServletContext()
    .getRealPath(clientPath));
  if (!root.exists()) {
   root.mkdirs();
  }
  String callback = request.getParameter("CKEditorFuncNum");
  File[] files = root.listFiles();
  if (files.length > 0) {
   for (File file : files) {
    String src = path + clientPath + file.getName();
    out.println("<img width='110px' height='70px' src='" + src
      + "' alt='" + file.getName()
      + "' onclick=\"funCallback(" + callback + ",'"
      + src + "')\">");
   }
  } else {
   out.println("<h3>未检测到资源。</h3>");
  }
 %>
</div>



strut.xml配置

<!-- ckeditor浏览和上传图片 -->
  <action name="browse" class="noticeAction" method="browse" >
   <result name="success">/ckeditor/uploader/browse.jsp</result>
  </action>

后台代码,后台action不做处理,直接跳转到browse.jsp页面

  //ckeditor上传图片和浏览图片
  public String browse(){
   System.out.println(this.getRequest().getContextPath());
   System.out.println(ServletActionContext.getServletContext().getRealPath("ckeditor/uploader/upload/"));
   return SUCCESS;
   
  }

实际效果如下图:


wKioL1XDBtaxuiAaAALA2ueT5Bs475.jpg


上传图片action代码:


    private File upload;  
    private String uploadContentType;           
    private String uploadFileName;      
    private String CKEditorFuncNum;
 
 
 public String upload(){
   String destPath = ServletActionContext.getServletContext().getRealPath("ckeditor/uploader/upload/images/");
   System.out.println(destPath);
   File file=new File(destPath);
   if(!file.exists()) file.mkdirs();
   System.out.println(file);
         try {          
          System.out.println(uploadFileName);
          String uuid = UUID.randomUUID().toString();   
          
        String rt[] = uploadFileName.split("\\.");          
        System.out.println(rt[1]);          
        uploadFileName = new String(uuid+"."+rt[1]);//解决上传图片中文路径时服务器报错的问题。
         FileUtils.copyFile(upload, new File(file,uploadFileName));
        
         PrintWriter out = ServletActionContext.getResponse().getWriter();
         out.write("<script type='text/javascript'>window.parent.CKEDITOR.tools.callFunction("+CKEditorFuncNum+", '/admin/ckeditor/uploader/upload/images/"     
         + uploadFileName    
         + "', '');</script>");
         
         } catch (IOException e) {
    e.printStackTrace();
   }
   return Action.NONE;
   
  }


strut.xml配置无需result

<action name="upload" class="noticeAction" method="upload" >
  </action>


wKiom1XDGqPinC5zAAHn2x6_5pU195.jpg

参考文章:

http://blog.csdn.net/mamba10/article/details/8543219

该文章中out.write写图片路径时前面少加了个应用名admin(你的web项目部署在服务器下的应用名),大家要注意

本文出自 “点滴积累” 博客,请务必保留此出处http://tianxingzhe.blog.51cto.com/3390077/1682293

目录
相关文章
|
小程序 JavaScript 数据库
微信小程序系列——上传下载图片以及图片的展示
微信小程序系列——上传下载图片以及图片的展示
|
前端开发 JavaScript
uniapp上传图片至服务器,获得在线图片链接预览(实战)
uniapp上传图片至服务器,获得在线图片链接预览(实战)
452 0
uiapp 上传图片
uiapp 上传图片
125 0
|
人工智能 算法 搜索推荐
记一次爬取搜索引擎缩略图并保存到本地
✨✨欢迎订阅本专栏或者关注我,大家一起努力每天一题算法题✨✨❤️❤️❤️最后,希望我的这篇文章能对你的有所帮助!愿自己还有你在未来的日子,保持学习,保持进步,保持热爱,奔赴山海!❤️❤️❤️。.........
157 0
记一次爬取搜索引擎缩略图并保存到本地
|
存储 NoSQL 前端开发
一文搞定图片选择及图片上传
本篇介绍了在 Flutter 中如何选择图片文件,图片选择组件的封装和如何将图片上传到后台。通过本篇,可以了解Flutter 构建应用时的图片上传过程。
977 0
|
数据采集 JavaScript 开发者
批量下载一些图片
学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您:
227 0
|
JavaScript
原生js实现图片单张上传及批量上传
原生js实现图片单张上传及批量上传
|
存储 Web App开发 前端开发
移动端图片操作(一)——上传
上传我们一般都是用“input[type=file]”控件。当你用此控件时,你就授权了网页和服务器访问对应的文件,就可以得到File对象。
移动端图片操作(一)——上传
图片上传预览
     最近做需求时遇到的,上传的时候预览一下,一开始并没有想着用插件什么的,太复杂,只是个预览效果,不如自己写省事。前前后后也就几十行代码(包含头尾HTML、注释、输出调试),反正是比引用插件少多了,自己写也是个锻炼。
814 0