@RequestParam MultipartFile doc1, 后盾接收不到
@RequestParam MultipartFile doc1, 后台接收不到
今天写文件上传时 使用ajaxform上传时 发现他找不到后台control
仔细比对url 没有写错
之后排除种种可能发现是 control 方法参数导致 @RequestParam MultipartFile doc1接收不到
然后百度搜索了springmvc MultipartFile之后发现是spring配置文件中没有配置
- <beans:bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"
- p:defaultEncoding="UTF-8"
- p:maxUploadSize="5400000"
- p:uploadTempDir="fileUpload/temp"
- >
- </beans:bean>
加上之后就后台接接收到了请求。
Spring通过配置一个分段上传解析器来完成对文件上传的解析和封装工作
首 先,DispatcherServlet必须找到一个文件上传解析器的实例,使用这个实例来检查本次请求的HttpServletRequest是否是一 个分段文件上传的Request,通过下面的Spring 源码可以看到,首先必须保证有一个MultipartResolver的实例,并且由该类的Resolver的isMultipart方法来验证,本次 Request是否为文件上传的Request.如果以上条件都满足,那么Spring将其转换为一个继承自HttpServletRequest的 MultipartHttpServletRequest返回,这样在你的Controller中就可以使用这个经过转换的request,从中取到 MultipartFile信息。
- protected HttpServletRequest checkMultipart(HttpServletRequest request) throws MultipartException {
- if (this.multipartResolver != null && this.multipartResolver.isMultipart(request)) {
- if (request instanceof MultipartHttpServletRequest) {
- logger.debug("Request is already a MultipartHttpServletRequest - if not in a forward, " +
- "this typically results from an additional MultipartFilter in web.xml");
- }
- else {
- return this.multipartResolver.resolveMultipart(request);
- }
- }
- // If not returned before: return original request.
- return request;
- }
详情请参考:http://blog.163.com/songyalong1117@126/blog/static/17139189720144273308468/