关于kindeditor和struts的图片上传,网上有很多方法,但很多都很复杂,比如通过Action处理,还要修改配置文件等,关键是还让人看的一头雾水。现在介绍一种简单的方法,只要添加一个jsp页面,和修改部分页面代码就行了(此方法结合网上的部分代码,dsea总结,并非原创!)。
1.项目中加入kindeditor,这一步大家应该都很清楚,就不累述了。
2.添加jar包支持,需要commons-fileupload-1.2.1.jar、commons-io-1.3.2.jar、json_simple-1.1.jar。kindeditor的lib目录下有这三个jar文件。
3.找到kindeditor目录下的plugins/image/image.html页面,修改如下代码,默认为php,修改为你的jsp上传处理页面。
var imageUploadJson = (typeof KE.g[id].imageUploadJson == 'undefined') ? '../../jsp/struts2Upload.jsp '
4.把struts2Upload.jsp添加到kindeditor目录/jsp/目录下,struts2Upload.jsp代码为:
<%@ page language="java" pageEncoding="GBK"%>
<%@page
import="java.util.*,java.io.*,
org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper,
java.util.concurrent.locks.*"%>
<%
//Struts2 请求 包装过滤器
MultiPartRequestWrapper wrapper = (MultiPartRequestWrapper) request;
// 获得上传的文件名
String fileName = wrapper.getFileNames("imgFile")[0];
//获得未见过滤器
File file = wrapper.getFiles("imgFile")[0];
//----------- 重新构建上传文件名----------------------
final Lock lock = new ReentrantLock();
String newName = null;
lock.lock();
try {
//加锁为防止文件名重复
newName = System.currentTimeMillis()
+ fileName.substring(fileName.lastIndexOf("."),
fileName.length());
}finally {
lock.unlock();
}
//------------ 锁结束 -------------
//获取文件输出流
FileOutputStream fos = new FileOutputStream(request.getSession()
.getServletContext().getRealPath("/")
+ "ke_upload\\" + newName);
//设置 KE 中的图片文件地址
String newFileName = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ request.getContextPath() + "/ke_upload/" + newName;
byte[] buffer = new byte[1024];
//获取内存中当前文件输入流
InputStream in = new FileInputStream(file);
try {
int num = 0;
while ((num = in.read(buffer)) > 0) {
fos.write(buffer, 0, num);
}
} catch (Exception e) {
e.printStackTrace(System.err);
} finally {
in.close();
fos.close();
}
//发送给KE
out.println("<html><head><title>Insert Image</title><meta http-equiv='content-type' content='text/html; charset=gbk'/></head><body>");
out.println("<script type='text/javascript'>");
out.println("parent.parent.KE.plugin['image'].insert('"
+ wrapper.getParameter("id") + "','" + newFileName + "','"
+ wrapper.getParameter("imgTitle") + "','"
+ wrapper.getParameter("imgWidth") + "','"
+ wrapper.getParameter("imgHeight") + "','"
+ wrapper.getParameter("imgBorder") + "','"
+ wrapper.getParameter("align") + "');</script>");
out.println("</body></html>");
%>
5.根据struts2Upload.jsp页面中上传图片的保存路径在WebRoot目录下建立ke_upload文件夹。
6.ok,这样就可以上传图片了,但是好像kindeditor没提供删除已上传的图片功能,感觉有点点缺陷。
分享到:
相关推荐
这是本人写的一个基于KindEditor-4.1.9的Java项目,采用Struts2框架,实现了KindEditor单张图片上传、批量图片上传,可以上传到image目录下的子目录中,可返回上一级目录,并实现了按名称、大小、类型排序的功能。...
介绍kindeditor环境部署已经如何进行图片上传。整合struts2以及页面bootstrap展现来进行 详细介绍。kindeditor版本为4.1.10
该实例解决了kindeditor编辑器与struts2"上传错误"的问题,能够直接运行!
2、复制struts需要的jar包和kindEditor必须jar包到lib下,因为它们的jar包邮重复,选择最新的就ok 3、如果需要后台java代码获取内容,可以在action中定义content属性,getContent就可以获取到 需要注意的是,这里的 ...
editorId的属性最好是单个,不能形如bean.content,如果是这样的话,上传图片会出现问题 如果是从数据库获取内容,并在kindEditor里选中,在action中定义content属性,setContent(bean.getContent());这种方式 ...
只需把这个 upload_json.jsp 文件替换 原有的即可 轻松加愉快
对kindeditor富文本编辑器做了修改,使其适用于struts2框架 解决了javascript动态生成的textarea无法显示工具栏的问题. 内附使用说明,操作很简单的。
Myeclipse 使用struts2框架 下的文本在线编辑器,图片上传,批量上传
我自己过滤掉了一些平常用不到的功能,很实用的编辑器,可以统计输入字数,获取内容非常简单,上传图片绝对没问题,界面美观大方
Anynote是一个基于extjs3.3、struts1.3.10、spring2.5、ibatis-2.3.4构建的个人信息管理系统(支持多用户)。主要功能包括:1、待办事项;2、日常笔记;... 2、相册管理模块,上传图片的缩略图移动到/web