springmvc 带文件和数据的表单后台接收与分析

本文介绍了如何在Spring MVC中处理带有文件和数据的表单提交。通过将HttpServletRequest转换为MultipartHttpServletRequest,可以方便地获取MultipartFile对象来处理文件信息,同时使用getParameter方法获取表单的其他字段数据。Spring MVC内部已经实现了请求的解析,无需开发者手动分离文件和数据。为了启用文件上传,需要在spring-mvc.xml配置文件中配置CommonsMultipartResolver解析器。

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

前台数据:

<form id="AddForm" action="Manage/add.action" method="post" enctype="multipart/form-data">
   <input type="file" name="file">
   <input type="text" name="username">
   <input type="text" name="usermobile">	
</form>

后台映射接收到后将普通的HttpServletRequest转换为MultipartHttpServletRequest 

MultipartHttpServletRequest mRequest = (MultipartHttpServletRequest)request;

然后用mRequest.getFile("file")得到MultipartFile对象从而得到文件相关信息

利用mRequest.getParameter("username")得到表单其他相关字段信息


其实,springmvc已经在内部进行了普通请求或带文件请求的判断,并对应已进行了解析,可从源码中看到也是利用apache common.fileupload jar进行的解析,

所以已经不需要我们自己再次进行文件与数据分离的解析了。

@Override
  public MultipartHttpServletRequest resolveMultipart(final HttpServletRequest request) throws MultipartException {
  Assert.notNull(request, "Request must not be null");
  if (this.resolveLazily) {
  return new DefaultMultipartHttpServletRequest(request) {
  @Override
  protected void initializeMultipart() {
  MultipartParsingResult parsingResult = parseRequest(request);
  setMultipartFiles(parsingResult.getMultipartFiles());
  setMultipartParameters(parsingResult.getMultipartParameters());
  setMultipartParameterContentTypes(parsingResult.getMultipartParameterContentTypes());
  }
  };
  }
  else {
  MultipartParsingResult parsingResult = parseRequest(request);
  return new DefaultMultipartHttpServletRequest(request, parsingResult.getMultipartFiles(),
  parsingResult.getMultipartParameters(), parsingResult.getMultipartParameterContentTypes());
  }
  }

springmvc-web 源码地址:

https://github.com/spring-projects/spring-framework/tree/master/spring-web/src/main/java/org/springframework/web/multipart



注:配置中需要在spring-mvc.xml中配置解析器

     <!-- 配置文件上传,如果没有使用文件上传可以不用配置,当然如果不配,那么配置文件中也不必引入上传组件包 -->
     <!-- 需要apache common.fileupload jar包 -->  
    <bean id="multipartResolver"    
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">    
        <!-- 默认编码 -->  
        <property name="defaultEncoding" value="utf-8" />    
        <!-- 文件大小最大值 -->  
        <property name="maxUploadSize" value="10485760000" />    
        <!-- 内存中的最大值 -->  
        <property name="maxInMemorySize" value="40960" />    
    </bean> 


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值