Python 官方文档:入门教程 => 点击学习
目录MultipartResolver和ServletFileUpload冲突1.首先Spring Boot默认会调用MultipartResolver2.需要重写一个MyMulti
如果同时使用了MultipartResolver 和ServletFileUpload,就会在iter.hasNext()返回false.然后整个循环就跳出去了。
整个问题产生的原因是spring框架先调用了MultipartResolver 来处理Http multi-part的请求。这里http multipart的请求已经消耗掉。后面又交给ServletFileUpload ,那么ServletFileUpload 就获取不到相应的multi-part请求。
来处理http multi-part的请求,须在配置文件中把spring.http.multipart.enabled=false。这样就不会默认调用MultipartResolver。
重写isMultipart方法
package dc.platfORM.admin.common.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.WEB.multipart.commons.CommonsMultipartResolver;
import javax.servlet.http.httpservletRequest;
@Configuration
public class MyMultipartResolver extends CommonsMultipartResolver {
@Override
public boolean isMultipart(HttpServletRequest request) {
// 过滤金格生成文书保存的接口 兼容MultipartResolver 或者 ServletFileUpload
if (request.getRequestURI().contains("mgt/document/upload")||request.getRequestURI().contains("/modules/document.html")) {
return false;
}
return super.isMultipart(request);
}
}
首先,页面代码,这里是upload.jsp:
<form action="${pageContext.request.contextPath}/upload" method="post" enctype="multipart/form-data">
姓名:<input type="text" name="name">
文件:<input type="file" name="multipartFile">
提交: <input type="submit" value="提交">
</form>
然后,我们在pom文件中添加文件上传用到的依赖文件:
<!--文件上传依赖-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
接着我们在spring-mvc.xml文件中配置文件上传解析器:
<bean id="commonsMultipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--上传文件总大小-->
<property name="maxUploadSize" value="54280"/>
<!--编码方式-->
<property name="defaultEncoding" value="UTF-8"/>
<!--单个上传的文件大小-->
<property name="maxUploadSizePerFile" value="54280"/>
</bean>
之后编写了文件上传代码:
@RequestMapping("/upload")
@ResponseBody
public void upload(String name, MultipartFile multipartFile) throws IOException {
System.out.println(name);
String filename = multipartFile.getOriginalFilename();
multipartFile.transferTo(new File("F:\\"+filename));
}
这个时候你以为万事大吉,可以成功运行的时候,惊喜出现了,页面给你来一个500…
idea控制台给你来个null
我把代码从头顺了一遍始终没找到我的错,于是乎,有技术朋友是真好!!!原来在文件解析器那里ID必须要配置为
*哈哈,加粗是为了醒目~~~~*
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--上传文件总大小-->
<property name="maxUploadSize" value="54280"/>
<!--编码方式-->
<property name="defaultEncoding" value="UTF-8"/>
<!--单个上传的文件大小-->
<property name="maxUploadSizePerFile" value="54280"/>
</bean>
大家千万记得这个!
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。
--结束END--
本文标题: 解决SpringBoot中MultipartResolver和ServletFileUpload的冲突问题
本文链接: https://www.lsjlt.com/news/155466.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0