ckeditor+jsp+spring配置图片上传
CKEditor用于富文本输入是极好的,它还有一些插件支持扩展功能,其中图片上传就是比较常用到的。本文简单记录我的实现步骤。
1.CKEditor除了提供三种标准版压缩包下载,还可根据自己的需求进行个性化打包下载。无论采取何种方式,从CKEditor官网下载带ImgUpload功能的压缩包,解压放在web工程resource目录下,例如我是放在:
webapp/resources/ckeditor
2.CKEditor配置文件(java):
import com.ckeditor.CKEditorConfig;
import com.ckeditor.EventHandler;
import com.ckeditor.GlobalEventHandler; public class CKEditorHelper
{
public static CKEditorConfig createConfig() {
CKEditorConfig config = new CKEditorConfig(); config.addConfigValue("filebrowserImageUploadUrl","uploadImg");//uploadImg是处理上传图片的url return config;
} public static EventHandler createEventHandlers() {
EventHandler handler = new EventHandler();
return handler;
} public static GlobalEventHandler createGlobalEventHandlers() {
GlobalEventHandler handler = new GlobalEventHandler();
return handler;
}
}
3.处理上传图片(java),随便写在一个controller里
@RequestMapping(value = "/uploadImg", method = RequestMethod.POST)
public ModelAndView uploadImg(@RequestParam("upload") CommonsMultipartFile upload,
String CKEditor,String CKEditorFuncNum,String langCode,
HttpServletResponse response) {
// System.out.println("-----file name is :" + file.getOriginalFilename());
String currentFileName= String.valueOf(System.currentTimeMillis());
String url="";
if (!upload.isEmpty()) {
String picId = UtilDate.getID();
try {
FileHelper.saveImg(upload, picId);
} catch (IOException e) {
e.printStackTrace();
}
url="getImg?imgId="+picId;
} // return "<script>window.opener.CKEDITOR.tools.callFunction( "+CKEditorFuncNum+", "+ url+" );</script>" ;
String message = "成功上传图片"+upload.getOriginalFilename();
try {
response.setContentType("text/html; charset=gbk");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<script type=\"text/javascript\">");
out.println("//<![CDATA[");
String call = "window.parent.CKEDITOR.tools.callFunction(" + CKEditorFuncNum + ",'" + StringEscapeUtils.escapeJavaScript(url)
+ "'" + (message != null ? ",'" + StringEscapeUtils.escapeJavaScript(message) + "'" : "") + ");";
out.println(call);
out.println("//]]>");
out.println("</script>");
out.println("</html>");
} catch (Exception e) {
e.printStackTrace();
}
return null; }
4.页面配置(jsp):这里只列出关键代码。这段代码的意思是,将id="content"的textarea替换为ckeditor的输入框,其配置文件为CKEditorHelper,资源文件为resources/ckeditor/
注意:前两行代码放在<HTML>标签之前,其他随意
<%@ taglib uri="http://ckeditor.com" prefix="ckeditor" %>
<%@ page import="CKEditorHelper" %> <form:textarea class="form-control" path="content" placeholder="内容" name="content" rows="5"/> <ckeditor:replace replace="content" basePath="resources/ckeditor/"
config="<%= CKEditorHelper.createConfig() %>"
events="<%= CKEditorHelper.createEventHandlers() %>"/> <script src="resources/ckeditor/ckeditor.js"></script>
ckeditor+jsp+spring配置图片上传的更多相关文章
- spring mvc 图片上传,图片压缩、跨域解决、 按天生成文件夹 ,删除,限制为图片代码等相关配置
spring mvc 图片上传,跨域解决 按天生成文件夹 ,删除,限制为图片代码,等相关配置 fs.root=data/ #fs.root=/home/dev/fs/ #fs.root=D:/fs/ ...
- CKEditor与dotnetcore实现图片上传
CKEditor的使用 1.引入js库 <script src="https://cdn.ckeditor.com/4.6.1/standard-all/ckeditor.js&quo ...
- 关于editor网页编辑器ueditor.config.js 配置图片上传
最近公司项目在做一个门户网站,其中新闻和简介等部分使用到了ueditor编辑器,但是上级明确指示需要图片上传这个功能,这时却发现图片上传功能不能正常使用,上传时一直报错,网上收了好几个处理办法,都说的 ...
- Django配置图片上传
本文首先实现django中上传图片的过程,然后解决富文本编辑器文件上传的问题. 一. 上传图片 1.在 settings.py 中配置MEDIA_URL 和 MEDIA_ROOT 在 D:\blog ...
- drupal中安装CKEditor文本编辑器,并配置图片上传功能
一.下载: 1.CKEditor模块 2.IMCE模块 二.安装 1.复制: 下载完上面两个模块之后,解压,将解压后整个文件夹,复制粘贴,放到 sites\all\modules下面,个人 ...
- spring boot图片上传至远程服务器并返回新的图片路径
界面上传图片时考虑到可能会有用户的图片名称一致,使用UUID来对图片名称进行重新生成. //UUIDUtils public class UUIDUtils { public static Strin ...
- ckeditor4.7配置图片上传
ckeditor作为老牌的优秀在线编辑器,一直受到开发者的青睐. 这里我们讲解下 ckeditor最新版本4.7的图片上传配置. https://ckeditor.com/ 官方 进入下载 https ...
- struts2+ckeditor配置图片上传
又是一个漫漫长夜. 公司的编辑器坏了,用的是百度编辑器,上传图片的网址被框架给拦截了,我们本地怎么测试都没问题,放到服务器就这样了.和老李找了半天,疯了,没原因的. 笔者以前用过jsp+ckedito ...
- 【记录】spring boot 图片上传与显示
问题:spring boot 使用的是内嵌的tomcat, 文件上传指定目录时不知道文件上传到哪个地方,不知道访问路径. //部署到服务器的tomcat上时通常使用这种方式request.getSer ...
随机推荐
- 李洪强iOS开发之零基础学习iOS开发【02-C语言】03-关键字、标识符、注释
上一讲中已经创建了第一个C语言程序,知道了C程序是由函数构成的,这讲继续学习C语言的一些基本语法.C语言属于一门高级语言,其实,所有的高级语言的基本语法组成部分都是一样的,只是表现形式不太一样.就好像 ...
- 欧拉工程第73题:Counting fractions in a range
题目链接:https://projecteuler.net/problem=73 n/d的真分数 ,当d<=12000时 在 1/3 and 1/2 之间的有多少个 public class P ...
- hdu 4474 Yet Another Multiple Problem
题意: 找到一个n的倍数,这个数不能含有m个后续数字中的任何一个 题解: #include<stdio.h> #include<string.h> #include<qu ...
- ThreadLocal类的理解
首先,ThreadLocal 不是用来解决共享对象的多线程访问问题的,一般情况下,通过ThreadLocal.set() 到线程中的对象是该线程自己使用的对象,其他线程是不需要访问的,也访问不到的.各 ...
- JTable单元格放自定义控件(一)-如何在JTable的单元格放JPanel
原文链接:http://blog.sina.com.cn/s/blog_7f1c8c710101hdpf.html 最近自己尝试着模仿着实现一款非常有名的进销库存管理系统(智慧记)里面的一个功能.功能 ...
- QTP之对测试用例的自动化过程的分解
第一部分:自动化一个测试用例 当你要开始自动化一个测试用例的时候,有一些重要的事情需要完成.当你完成所有这些事情的时候,测试脚本的自动化也随之完成. 在这里,我们将首先在大部分的自动化测试用例里找出所 ...
- 轻量级MVC标准
看到标题,估计有人就开始想吐了,没关系,你可以先吐完再看,现在MVC框架多如牛毛,没必要再重复发明轮子了,要声明的是,这里不是想要发明轮子,也没那个闲工夫去发明轮子,而是看到这么多MVC框架模样都差不 ...
- 修练8年C++面向对象程序设计之体会
http://pcedu.pconline.com.cn/empolder/gj/c/0504/609482_1.html
- oracle 11g SQL Developer instead of isqlplus
Oracle11g的新工具SQL DEVELOPER,替代了 isqlplus 1.创建连接方式 2.SQL输入窗口 3.表的结构及其他信息查阅 4.SQL语句测试 5.创建表 6.用户授权 7.数据 ...
- 【转载】Morris遍历二叉树 & BST(二叉搜索树) Traverse & 空间O(1) 时间O(n)
因为做一道Leetcode的题目(前面博客有:link),需要用Space O(1)空间复杂度来中序遍历树, 看了Discuss,也上网搜了一下,发现空间O(1)可以用 Morris遍历的方法.方法介 ...