Spring MVC文件上传

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring MVC文件上传相关的知识,希望对你有一定的参考价值。

1.Spring MVC文件上传简介
  在SpringMVC中,文件上传功能可以由即插即用的CommonsMultipartResolver解析器组件实现,它定义在org.springframework.web.multipart包里。
  Spring提供的CommonsMultipartResolver解析器可以支持Commons FileUpload和COS FileUpload两种上传组件。
2.CommonsMultipartResolver组件
  CommonsMultipartResolver解析器组件可以调用common-fileupload.jar的功能,将请求提交的文件信息解析出来,该组件使用步骤如下
    引入common-fileupload.jar和common-io.jar开发包
    在Spring配置文件中添加CommonsMultipartResolver组件的bean定义
    <bean id="multipartResolver" class = "org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
3.视图表单实现
  在JSP视图 表单中,<form>标记必须追加enctype="multipart/form-data"设置,指定表单数据的提交方式。
    默认情况,提交格式是application/x-www-form-urlencoded,不能用于文件上传;必须使用multipart/form-data设置才可以。
    method属性也必须设置为post方式提交
4.Controller实现
  在Controller处理方法中,可以使用@RequestParam注解将CommonsMultipartResolver解析出的文件赋值给MultipartFile参数对象,该对象包含了上传的文件信息。
    public String upload(@RequestParam(value="file",required = false)MultipartFile file,
      HttpServletRequest request,ModelMap model){
      //TODO将file文件对象保存到指定目录下
    }
5.限制文件上传大小
  CommonsMultipartResolver解析器可以设置对上传文件大小的限定,配置示例如下
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
      <property name="maxUploadSize" value="102400"/>
    </bean>
  当设置了maxUploadSize大小限制后,如果上传文件大于指定大小,会抛出MaxUploadSizeExceededException异常,可以采用异常处理给客户显示友好提示。
  在处理上传的Controller组件中定义@ExceptionHandler异常处理方法
  @ExceptionHandler
  public Model doException(Exception ex){
    if(ex instanceof MaxUploadSizeExceededException){
      long size = ((MaxUploadSizeExceededException)ex).getMaxUploadSize();
      model.put("errors","文件应小于"+size+"字节 ");
    }else{
      model.put("errors","未知错误:"+ex.getMessage());
    }
    return new ModelAndView("upload",model);
  }
  提示:
    CommonsMultipartResolver的resolveLazily属性指定为true,将文件解析延迟,才能触发上面的异常处理。

以上是关于Spring MVC文件上传的主要内容,如果未能解决你的问题,请参考以下文章

Spring MVC 之文件上传

spring mvc 怎么大小上传文件控制?

Spring MVC 文件上传功能详解

Spring MVC更多家族成员----文件上传---06

Spring MVC实现文件上传

java spring mvc 客户端上传文件到服务器端