Spring 4.1.7 MVC @RequestPart 问题

本文详细介绍了在使用Spring框架4.1.7进行multipart/form-data方式上传文本和文件混合数据时遇到的错误及解决方法。包括调试客户端multipart格式,更换RequestPart为RequestParam,解决multipartresolver问题,以及正确配置application.properties文件中的multipart参数。

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

今天在spring 4.1.7 中尝试 multipart/form-data 的方式上传文本和文件混合数据,服务器老报错,说请求中并没有提供XXX字段(服务端配置的@RequestPart绑定)。

调试客户端multipart格式,甚至用 html页面,通过浏览器提交都不行。后来将 @RequestPart 换成 @RequestParam 就好了。之后查阅官方示例,也是用的后者。

https://spring.io/guides/gs/uploading-files/

后来发现字符串数据可以接收到,但文件上传,又解析不出来,猜测可能是 multipart resolver 出了问题,一路调试,发现 servlet request中是有上传的文件信息的。检查 application.properties 文件,发现已经启用了multipart:

multipart.enabled=true
multipart.max-file-size=10MB

于是删除java 配置中的

@Bean
public CommonsMultipartResolver getMultipartResolver() {
CommonsMultipartResolver resolver = new CommonsMultipartResolver();
resolver.setMaxUploadSize( 1024 * 1024 * 5 );
resolver.setMaxInMemorySize( 1024 * 1024 );
resolver.setDefaultEncoding( “UTF-8” );
return resolver;
}

然后就奇迹般的好了。猜测是spring 自己会初始化并装配 CommonsMultipartResolver,自己装配反而丢失了一些配置,具体还需研究。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值