由于struts框架对request对象做了封装,原来处理上传图片的upload_json.jsp文件无法使用了,
于是对kindeditor中处理上传图片的upload_json.jsp文件进行重写,通过多次测试后,成功实现了图片的上传。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.*,java.io.*"%>
<%@ page import="java.text.SimpleDateFormat"%>
<%@ page import="org.apache.commons.fileupload.*"%>
<%@ page import="org.apache.commons.fileupload.disk.*"%>
<%@ page import="org.apache.commons.fileupload.servlet.*"%>
<%@ page import="com.opensymphony.xwork2.ActionContext"%>
<%@ page import="org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper"%>
<%@ page import="org.json.simple.*"%>
<%
//文件保存目录路径 img_upload是服务器存储上传图片的目录名
String savePath = request.getSession().getServletContext().getRealPath("/")+ "img_upload/";
//文件保存目录URL
String saveUrl = request.getContextPath() + "/img_upload/";
//定义允许上传的文件扩展名
String[] fileTypes = new String[] { "gif", "jpg", "jpeg", "png","bmp" };
//允许最大上传文件大小
long maxSize = 1024000;
//Struts2 请求 包装过滤器
MultiPartRequestWrapper wrapper = (MultiPartRequestWrapper) request;
//获得上传的文件名
String fileName = wrapper.getFileNames("imgFile")[0];
//获得文件过滤器
File file = wrapper.getFiles("imgFile")[0];
//得到上传文件的扩展名
String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
//检查扩展名
if (!Arrays.<String> asList(fileTypes).contains(fileExt)) {
out.println(getError("上传文件扩展名是不允许的扩展名。"));
return;
}
//检查文件大小
if (file.length() > maxSize) {
out.println(getError("上传文件大小超过限制。"));
return;
}
//检查目录
File uploadDir = new File(savePath);
if (!uploadDir.isDirectory()) {
out.println(getError("上传目录不存在。"));
return;
}
//检查目录写入权限
if (!uploadDir.canWrite()) {
out.println(getError("上传目录没有写入权限。"));
return;
}
//重构上传图片的名称
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
String newImgName = df.format(new Date()) + "_"+ new Random().nextInt(1000) + "." + fileExt;
//设置 KE 中的图片文件地址
String newFileName = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()
+ saveUrl + newImgName;
byte[] buffer = new byte[1024];
//获取文件输出流
FileOutputStream fos = new FileOutputStream(savePath + newImgName);
//获取内存中当前文件输入流
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
JSONObject obj = new JSONObject();
obj.put("error", 0);
obj.put("url", saveUrl + newImgName);
out.println(obj.toJSONString());
%>
<%!private String getError(String message) {
JSONObject obj = new JSONObject();
obj.put("error", 1);
obj.put("message", message);
return obj.toJSONString();
}
%>
分享到:
相关推荐
kindeditor整合struts2 增加删除图片功能
介绍kindeditor环境部署已经如何进行图片上传。整合struts2以及页面bootstrap展现来进行 详细介绍。kindeditor版本为4.1.10
这个编辑器相对于fckeditor来说相对比较好因为这个在于struts2整合的时候不用再去重写过滤文件了
该实例解决了kindeditor编辑器与struts2"上传错误"的问题,能够直接运行!
kindeditor在JSP页面Struts2框架下使用的demo,解决了在Struts2下上传服务器出错的问题,上传文件不存在的问题,解决了kindeditor与textarea文本域数据同步,带非空验证!
这是本人写的一个基于KindEditor-4.1.9的Java项目,采用Struts2框架,实现了KindEditor单张图片上传、批量图片上传,可以上传到image目录下的子目录中,可返回上一级目录,并实现了按名称、大小、类型排序的功能。...
修复kindeditor官方对集成了Struts2框架上传文件无法上传的问题!
2、复制struts需要的jar包和kindEditor必须jar包到lib下,因为它们的jar包邮重复,选择最新的就ok 3、如果需要后台java代码获取内容,可以在action中定义content属性,getContent就可以获取到 需要注意的是,这里的 ...
kindeditor本地上传图片支持token字段,kindeditor本身图片上传并无token参数,本资源利用原生ajax改造上传代码。
Myeclipse 使用struts2框架 下的文本在线编辑器,图片上传,批量上传
kindEditor4.1版修改上传图片宽高(图片自适应)
优化kindeditor,修改flash批量上传图片方式为H5上传,添加第三方视频代码功能,添加手机尺寸预览,粘贴时自动上传网络图片,粘贴时自动上传截图,地图宽度可设置百分比显示...
editorId的属性最好是单个,不能形如bean.content,如果是这样的话,上传图片会出现问题 如果是从数据库获取内容,并在kindEditor里选中,在action中定义content属性,setContent(bean.getContent());这种方式 ...
JSP版的完善KindEditor在线编辑器(带附件上传与图片按日期分类管理功能) 1.集合了日期、时间、在线预览和特殊字符插件,采用3.0皮肤; 2.将图片上传与管理的JSP页面改写成SERVLET,同时去除JSON包; 3.添加图片压缩...
可以上传的 ASP在线编辑器,能本地上传图片。简单快捷,功能齐全。kindeditor
今天本人才接触KindEditor,一看得到这个外观漂亮,也是JS写的,觉得比较好用就开始琢磨自己来拿用 但是在用时就发现很多问题! 其中图片上传就是一个 所以就自己写了个Demo研究,现在总算没问题了 这个Demo希望...
vue 使用kindeditor粘贴复制图片上传给自己服务器,单独图片上传,避免用户到处寻找,解决了用户粘贴复制截图时候,图片变成base64,上传给后台的时候长度过于长,所以在粘贴的时候就上传给服务器,最后以形式显示在富...
兼顾新浪编辑器和kindeditor编辑的图片上传整合 测试地址:edit/edit/editor.php 上传类:upload_cgi/upload.php 在线演示地址:http://www.ykisp.com/pliuy/user/editor.php
kindeditor富文本,多图上传,去除flash插件,解决无法展示选择图片按钮问题,以及添加上传后结果展示。
kindeditor文本编辑文本编辑器实例 功能包含实现功能包含: 本地图片上传,浏览服务器,自定义编辑器按钮等