@RequestParam MultipartFile doc1, 后台接收不到

今天写文件上传时 使用ajaxform上传时 发现他找不到后台control

仔细比对url 没有写错

之后排除种种可能发现是 control 方法参数导致 @RequestParam  MultipartFile doc1接收不到

然后百度搜索了springmvc MultipartFile之后发现是spring配置文件中没有配置

  1.  <beans:bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"  
  2.         p:defaultEncoding="UTF-8"  
  3.         p:maxUploadSize="5400000"  
  4.         p:uploadTempDir="fileUpload/temp"  
  5.      >  
  6.     </beans:bean> 

加上之后就后台接接收到了请求。

Spring通过配置一个分段上传解析器来完成对文件上传的解析和封装工作

首 先,DispatcherServlet必须找到一个文件上传解析器的实例,使用这个实例来检查本次请求的HttpServletRequest是否是一 个分段文件上传的Request,通过下面的Spring 源码可以看到,首先必须保证有一个MultipartResolver的实例,并且由该类的Resolver的isMultipart方法来验证,本次 Request是否为文件上传的Request.如果以上条件都满足,那么Spring将其转换为一个继承自HttpServletRequest的 MultipartHttpServletRequest返回,这样在你的Controller中就可以使用这个经过转换的request,从中取到 MultipartFile信息。

  1. protected HttpServletRequest checkMultipart(HttpServletRequest request) throws MultipartException {  
  2.     if (this.multipartResolver != null && this.multipartResolver.isMultipart(request)) {  
  3.         if (request instanceof MultipartHttpServletRequest) {  
  4.             logger.debug("Request is already a MultipartHttpServletRequest - if not in a forward, " +  
  5.                     "this typically results from an additional MultipartFilter in web.xml");  
  6.         }  
  7.         else {  
  8.             return this.multipartResolver.resolveMultipart(request);  
  9.         }  
  10.     }  
  11.     // If not returned before: return original request.  
  12.     return request;  

详情请参考:http://blog.163.com/songyalong1117@126/blog/static/17139189720144273308468/

猜你喜欢

转载自15757126299.iteye.com/blog/2268868