博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UEditor 与Struts2 结合上传图片
阅读量:6965 次
发布时间:2019-06-27

本文共 1267 字,大约阅读时间需要 4 分钟。

使用百度开发的所见即所得富文本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);

fii.hasNext()  一直返回false;

 

本着不重复发明轮子的原则,具体部署的资料请参考下面的链接(版本:1.2.6.1 jsp utf-8)

 

 

 

转载于:https://www.cnblogs.com/pingan1314/p/3367237.html

你可能感兴趣的文章
Salesforce平台支持多租户Multi tenant的核心设计思路
查看>>
我的最佳写作方式
查看>>
Jackson 序列化对象成 JSON 字符串,忽略部分字段(属性)
查看>>
突破自己的技术思维
查看>>
百度地图 osm地图 leaflet echarts webapck的组合使用时的踩坑记录
查看>>
画原型时需要注意什么?
查看>>
vue+element 后台管理系统(三)树形图
查看>>
简析正则表达式的使用
查看>>
creator cc.Class跨脚本访问(小白笔记)
查看>>
十三、面向对象程序设计
查看>>
Slog42_支配vue框架初阶项目之博客网站-单页-默认头像的布局和定位
查看>>
小白的 --Vuex 入门理解
查看>>
面试--js实现继承的几种方式
查看>>
Javascript代码段记录: utils
查看>>
javascript常用工具类封装
查看>>
基于WeUI的Angular2开发
查看>>
Laravel 配置项即时载入的服务提供者
查看>>
你真的了解javascript吗?(一)
查看>>
(六)java多线程之ReadWriteLock
查看>>
前端性能优化之jQuery按需加载轮播图
查看>>