1. 使用firefox的firebug调试发现路径没有问题,官网的案例讲的也比较明白。排除这些错误。
2. debug发现parseRequest方法异常,一查发现是struts2的原因,struts2将request封装成org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper 了。
解决方案:
1. 将web.xml 中?struts过滤器改成如下:
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
?</filter-mapping>
2. 重写上传文件部分
<%@?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>");
%>
?参考:
http://commons.apache.org/fileupload/faq.html#howto-parse-in-action
http://www.iteye.com/topic/599971
http://topic.csdn.net/u/20090514/10/ba62c761-e591-4c9e-859a-87907634ea13.html
分享到:
相关推荐
2、复制struts需要的jar包和kindEditor必须jar包到lib下,因为它们的jar包邮重复,选择最新的就ok 3、如果需要后台java代码获取内容,可以在action中定义content属性,getContent就可以获取到 需要注意的是,这里的 ...
只需把这个 upload_json.jsp 文件替换 原有的即可 轻松加愉快
自己实现的简单weike系统(ssh+kindEditor) 具有发任务,竞选任务,站内短信息,任务托管等功能 界面没有多少美化。。。 使用注解方式
Extjs+Kindeditor的例子
实际项目,修改数据库文件和对应的配置就能够自动生成数据库,可运行,springMVC的各种使用方式和aop的切面配置均可见到,里面spring4和hibernate4的整合配置弄了两天才解决,绝对物有所值
jquery + kindEditor使用,html js jquery 实现文本编辑器的加载 显示 使用
struts2image kindeditor
jsp+kindeditor 实现类似于编辑功能
2、复制struts需要的jar包和kindEditor必须jar包到lib下,因为它们的jar包邮重复,选择最新的就ok 3、如果需要后台java代码获取内容,可以在action中定义content属性,getContent就可以获取到 需要注意的是,这里的 ...
配置好的编辑器 asp.net+kindeditor,vs2008环境
jquery + kindEditor 单个图片上传,通过插件实现图片上传至文本编辑器中,并进行回显,展示图片。
对kindeditor富文本编辑器做了修改,使其适用于struts2框架 解决了javascript动态生成的textarea无法显示工具栏的问题. 内附使用说明,操作很简单的。
最近公司开发题库类,查询了好几款公式编译器,整合富文本框的,整理的公式编译器,最近要开发数学公式web 应用个人主页整理好几款
2、将kindeditor的上传功能及文件浏览功能整合到Thinkphp中,杜绝一些安全隐患。 3、原来 DWZ官方 整合的只有文章系统,没有文章分类,我将原来的文章的数据库字段做了一些修改,增加了无限级分类。 4、修复了一些...
NULL 博文链接:https://senhui19.iteye.com/blog/1344393
kindeditor整合struts2 增加删除图片功能
介绍kindeditor环境部署已经如何进行图片上传。整合struts2以及页面bootstrap展现来进行 详细介绍。kindeditor版本为4.1.10
kindeditor在JSP页面Struts2框架下使用的demo,解决了在Struts2下上传服务器出错的问题,上传文件不存在的问题,解决了kindeditor与textarea文本域数据同步,带非空验证!
修复kindeditor官方对集成了Struts2框架上传文件无法上传的问题!