springMVC实现表单上传文件,MultipartResolver介绍及配置 |
您所在的位置:网站首页 › multipartfile文件重命名 › springMVC实现表单上传文件,MultipartResolver介绍及配置 |
@大神爱吃茶 springMVC中配置CommonsMultipartResolver,介绍MultipartResolver的使用 一、MultipartResolver的配置综述 MultipartResolver是专门处理文件上传的一个类,比如我们在前台上传文件到如FTP服务器。 MultipartResolver的使用: 使用MultipartResolver需要在pom中引入两个包: 1 2 3 commons-fileupload 4 commons-fileupload 5 1.2.2 6 7 8 commons-io 9 commons-io 10 2.0.1 11同时使用MultipartResovler需要在springMVC的配置文件dispatcher-Servlet.xml中进行以下的配置: 1 2 3 4 5 6 7 8 9当我们发起请求的时候会通过dispatcher-Servlet来拦截请求,DispatcherServlet.java中的checkMultipart方法会调用MultipartResovler类中的isMultipart()方法来判断请求中是否带有文件,返回boolean的值。 1 protected HttpServletRequest checkMultipart(HttpServletRequest request) throws MultipartException { 2 if (this.multipartResolver != null && this.multipartResolver.isMultipart(request)) { 3 if (WebUtils.getNativeRequest(request, MultipartHttpServletRequest.class) != null) { 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 if (hasMultipartException(request) ) { 8 logger.debug("Multipart resolution failed for current request before - " + 9 "skipping re-resolution for undisturbed error rendering"); 10 } 11 else { 12 try { 13 return this.multipartResolver.resolveMultipart(request); 14 } 15 catch (MultipartException ex) { 16 if (request.getAttribute(WebUtils.ERROR_EXCEPTION_ATTRIBUTE) != null) { 17 logger.debug("Multipart resolution failed for error dispatch", ex); 18 // Keep processing error dispatch with regular request handle below 19 } 20 else { 21 throw ex; 22 } 23 } 24 } 25 } 26 // If not returned before: return original request. 27 return request; 28 }1 boolean isMultipart(HttpServletRequest request); 如果解析到请求中包含的有文件的话就会调用MultipartResovler类的resolveMultipart()方法。 1 MultipartHttpServletRequest resolveMultipart(HttpServletRequest request) throws MultipartException; 然后将文件数据解析成 MultipartFile 并封装在 MultipartHttpServletRequest对象中,最后传递给 Controller。 1 public interface MultipartHttpServletRequest extends HttpServletRequest, MultipartRequest二、MultipartResolver的使用简例: 往往我们在前台通过springMVC实现表单提交的方式来上传文件: 1 2 3 4
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |