ueditor1.3.6jsp版在struts2应用中上传图片报"未找到上传文件"解决方案

本文介绍在Struts2应用中使用UEditor富文本编辑器时遇到的图片上传失败问题及其解决办法。主要原因是Struts2默认使用的上传组件会删除请求中的文件域,导致上传失败。通过自定义过滤器绕过特定目录的过滤,可以有效解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在struts2应用中使用ueditor富文本编辑器上传图片或者附件时,即使配置好了上传路径信息,也会出现"未找到上传文件"的错误提示,出先该问题的原因是:在配置struts过滤器,过滤路径设置/*方式时,由于struts2框架默认使用apache的Commons FileUpload组件和内建的FileUploadInterceptor拦截器实现上传,会将request文件域封装到action中一个File类型的属性中,并删除request中的文件域,因此会上传文件失败。

在这里先说下ueditor1.3.6 jsp版文件上传的相关配置。

Ueditor的目录结构

首页我们要在ueditor.config.js文件中配置ueditor的基本相对路径

接下来看看图片上传的配置

我们可以看出图片上传是通过ueditor根目录下jsp目录下的imageUp.jap完成的。savePath为文件保存目录列表

会在下图中用到

对应的会在jsp目录下创建upload目录用于保存上传的图片

最后我们打开imageUp.jsp页面,会看到该页面用到Uploader.java类,所以我们需要类路径下创建一个ueditor包并将Uploader.java类拷贝进去

完成以上配置,当我们上传文件时,就会出现“未找到上传文件”的提示。

解决方案:

1.更改struts配置/*为*.xx的方式。(由于项目原因,该方式本人未亲试,若有读者实验过,请留言告知,谢谢)

2.自己写一个action代替原有的imageUp.jsp页面(貌似该方案比较麻烦)

3.自己定义一个struts过滤器,指定不对ueditor/jsp/目录下的jsp页面进行过滤。(该方案相对上一种就比较简单)

过滤器代码如下:

package com.jl.filter;

import java.io.IOException;

import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter;

public class MyStrutsFilter extends StrutsPrepareAndExecuteFilter{
    @Override
    public void doFilter(ServletRequest req, ServletResponse res,
            FilterChain chain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) req;
        String url = request.getRequestURI();         
        System.out.println(url);         
        if (url.contains("/meeting/ueditor/jsp/")) {             
            System.out.println("使用自定义过滤器");             
            chain.doFilter(req, res);         
        }else{             
            System.out.println("使用默认过滤器");             
            super.doFilter(req, res, chain);         
        } 
    }
}

修改struts配置如下:

 

<!-- 配置struts过滤器 -->
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>com.jl.filter.MyStrutsFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

 

到此重启项目,再进行上传操作就不会再出错了哦!^_^

 

转载来源,尊重作者的劳动成果:http://my.oschina.net/jiangli0502/blog/210263

转载于:https://www.cnblogs.com/xiaoqisfzh/p/5519166.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值