spring文件上传失败,无法解析文件对象 class org.springframework.web.multipart.support.

触发背景

在做一个导入excel的需求,想要支持多文件上传。结果就出现了异常。
异常状态码:500,异常信息:操作失败,write javaBean error, fastjson version 1.2.75, class org.springframework.web.multipart.support.StandardMultipartHttpServletRequest$StandardMultipartFile, fieldName : 0, write javaBean error, fastjson version 1.2.75, class org.springframework.web.multipart.MultipartFileResource, fieldName : resource

在这里插入图片描述

结论

JSON解析异常,无法把文件对象转成json字符串。报错代码大概率是在AOP里面。

排查过程

从异常信息来看,并不是我所捕获的异常。开启debug,一直跑到最后即将返回都没有发送异常。再点下一步,就返回异常了。
在这里插入图片描述
大致可以排除是我写的代码的问题。从异常来看,涉及到fastjson 和multipart,似乎是fastjson 无法解析multipart对象,然后发生了异常;但我的代码并没有使用json,应该是AOP的代码出现了异常,但我找不到AOP代码在哪。
于是我复制错误信息去网上搜,搜出来说是AOP拦截了参数类型,只需要删掉就行了。我根据他们的文件名去搜,还真搜到了,好在文件名的部分一样。(你们可以大概看看有没有什么AOP操作,比如日志注解)
在这里插入图片描述

从下面代码可以看出,只把单文件过滤掉了,但多文件没有过滤掉,于是我在后面加上了之后再测试就可以了。
在这里插入图片描述
加上之后:
在这里插入图片描述

这些代码是项目实现的日志注解,我确实在方法加上了该注解,而这个注解一开始的实现没有考虑到多文件的情况,所以没有过滤掉,加上之后就好了。发生异常的主要原因是JSONObject无法将文件对象转成JSON字符串,不理解为什么网上的把拦截去掉反而不会再报异常。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值