异常记录:Fileupload Stream ended unexpectedly Linux 服务器上传服务异常

昨天遇到个异常 org.apache.commons.fileupload.MultipartStream IOFileUploadException:Processingofmultipart/form−datarequestfailed.org.apache.commons.fileupload.MultipartStreamMalformedStreamException: Stream ended unexpectedly。

在本地调试的时候什么都是好的,一部署到Linux上就产生这个异常。尝试了各种方法来解决它,比喻配置tomcat临时文件路径、配置tomcat post 大小、配置mulitipart 上传大小限制等等,都没有解决。

各种烦躁,最后快要放弃的的时候,将Springboot 的版本降到了2.1.2 结果问题就解决了。

    @PostMapping(value="save")
    @ApiOperation(value = "保存图片", notes = "")
    JsonResult saveImage(HttpServletRequest request, HttpServletResponse response) throws Exception {
        MultipartHttpServletRequest mRequest = (MultipartHttpServletRequest) request;
        Iterator<String> iter = mRequest.getFileNames();
        String picNames = "";
        while (iter.hasNext()) {
            MultipartFile multipartFile = mRequest.getFile(iter.next());
            if (null != multipartFile) {
                String picName = UUID.randomUUID().toString().replaceAll("-", "");              //新文件名
                picNames += (MyStrUtils.isEmpty(picNames) ? "" : ",") + picName;
                ImageUtils.save(multipartFile, weappProperties.getPath(), picName, weappProperties.getPictype());
            }
        }
        if(MyStrUtils.isNotEmpty(picNames)) return JsonResult.success(picNames);
        else return JsonResult.fail("上传的图片为空");
    }

    @PostMapping(value="insert")
    @ApiOperation(value = "保存单图片", notes = "")
    public JsonResult insertImage( @RequestParam("file") MultipartFile multipartFile) throws Exception{
        String picName= UUID.randomUUID().toString().replaceAll("-", "");
        ImageUtils.save(multipartFile, weappProperties.getPath(), picName,weappProperties.getPictype());
        return JsonResult.success(picName);
    }

在Linux服务器上异常表现在 1、第一次大文件可以上传 ,之后超过几K的文件都不可以上传  2、在上图save方法返回的直接是上传的图片为空,insert方法直接抛异常找不到multipartFile对象

这个问题虽然是解决了,但是究竟原理是什么还得待日后发掘(耽误的时间太久了)。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值