使用百度开发的所见即所得富文本web编辑器Ueditor,上传图片一直失败,有红色的×提示。
通过调试Ueditor.java文件,发现问题出现在下面的①处
public void upload() throws Exception {
boolean isMultipart = ServletFileUpload.isMultipartContent(this.request);
if (!isMultipart) {this.state = this.errorInfo.get("NOFILE");return;}
DiskFileItemFactory dff = new DiskFileItemFactory();
String savePath = this.getFolder(this.savePath);
dff.setRepository(new File(savePath));
try {
ServletFileUpload sfu = new ServletFileUpload(dff);
sfu.setSizeMax(this.maxSize * 1024);
sfu.setHeaderEncoding("utf-8");
FileItemIterator fii = sfu.getItemIterator(this.request);
while (fii.hasNext()) { -------------①
每次都是返回false,所以程序没有继续执行了,而是直接退出。 下面提供最终的解决方案。
解决办法1.修改web.xml不过滤*.jsp也就是ueditor的上传图片请求。
2.就是更改ueditor的上传图片请求地址,不让struts2过滤。
具体情况根据自己的项目而定,释掉了下面一段,上传成功!!!
<filter-mapping>
<filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>因为项目中使用了Struts2框架,Struts2的Filter会过滤到上传文件的request,封装为Struts2自己的MultiPartRequestWrapper,
这个时候再到UEditor里的Uploader中用commons-fileupload组件解析request,就无法获取到正确的文件流,所以上传失败。
FileItemIterator fii = sfu.getItemIterator(this.request);
本着不重复发明轮子的原则,具体部署的资料请参考下面的链接(版本:1.2.6.1 jsp utf-8)