Corrupt form data: premature ending 错误

最近在做银行转账回盘上载时出现下面异常:

java.io.IOException: Corrupt form data: premature ending
          at com.oreilly.servlet.multipart.MultipartParser.(MultipartParser.java:166)
          at com.oreilly.servlet.multipart.MultipartParser.(MultipartParser.java:94)
          at com.oreilly.servlet.MultipartRequest.(MultipartRequest.java:219)
        at com.oreilly.servlet.MultipartRequest.(MultipartRequest.java:106)

 

 

 

 

 

 

 

 

 

由报错信息可以知道,出错地点位于一个公共的JAR包,引用地址为:

import com.oreilly.servlet.MultipartRequest;

 下面是出错部分的源代码,供参考:

public class BankTransferEvent extends EventSupport {

    /**

     * 构造方法

     */

    public BankTransferEvent(HttpServletRequest request, LifeUser lifeuser) {

         super(request, null, lifeuser); 

        this.request = request;

        this.lifeuser = lifeuser;

     //后面的代码其实在父类中已经处理过

        if (isMultiPartRequest(request)) {

            try {

                this.multi_request = new MultipartRequest(request, TEMP_PATH, MAX_FILE_SIZE);

                if (!checkRepeatedSubmit(request)) {

                    throw new AppException(3);

                }

            } catch (Exception ex) {

                ex.printStackTrace();

            }

        }

    }

}

 

其实在最开始,上面这个构造方法中并没有super(request, null, lifeuser)这一行,是因为后来要调用公共类EventSupport中的一个getParameterValues方法,我特意修改了BankTransferEvent类的结构使其继承了EventSupport类(现在想起来有点可笑,getParameterValues很好写,完全可以不加父类)。getParameterValues方法如下:


 子//getParameterValues

    protected com.oreilly.servlet.MultipartRequest multiRequest;

    public String[] getParameterValues(String s)

    {

        String as[] = null;

        if(multiRequest != null)

            as = multiRequest.getParameterValues(s);

        else

            as = request.getParameterValues(s);

        return as;

    }

 

现在回到上面的问题,尽管父类调用new  MultipartRequest(…) 时生成的MultipartRequest与子类中的并不是同一个(即子类中的multi_request并没有继承父类中的multiRequest参数。但其实子类的构造方法中的new MultipartRequest(request, TEMP_PATH, MAX_FILE_SIZE)中的参数request已经在super(request, null, lifeuser);这步中被父类的构造方法中用过了,所以会报错。

       简单点说,就是一个request参数只能用来构造一次MultipartRequest,否则就会有问题。

 

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值