Eap使用(8) 文件上传

 

基于spring mvc

文件上传配置

之前的配置方法名为commonsMultipartResolver 但是在使用时参数注入MultipartFile类型时提示没有文件上传的配置 怀疑并不是根据type注入而是根据name进行的注入.只是怀疑,并没有深入的挖源码

/**
 * 目前的最新配置 
 */
@Bean
public CommonsMultipartResolver multipartResolver(){
    CommonsMultipartResolver resolver = new CommonsMultipartResolver();
    resolver.setMaxUploadSize(100*1024*1024);
    resolver.setMaxUploadSizePerFile(10*1024*1024);
    return resolver;
}

声明式文件上传使用


@Controller
@RequestMapping("/asset/test")
public class ExportImportAssetController implements LogSupport {
    /**
     * file 为 submit时的 name值  此为单文件上传
     * @return 
     */
    @RequestMapping("upload")
    public ModelAndView upload(@RequestPart("file") MultipartFile multipartFile){
        ...
    }
    /**
     * file 为 submit时的 name值  此为多文件上传
     * @return 
     */
    @RequestMappping("uploadAll")
    publc ModelAndView upload(@RequestPart("files") MultipartFile [] files){
        ...
    }
}

标准

从Spring3.1开始,Spring提供了两个MultipartResolver的实现用于处理multipart请求。

  • CommonsMultipartResolver
  • StandardServletMultipartResolver

CommonsMultipartResolver使用commons Fileupload来处理multipart请求,所以在使用时,必须要引入相应的jar包; StandardServletMultipartResolver是基于Servlet3.0来处理multipart请求的,所以不需要引用其他jar包,但是必须使用支持Servlet3.0的容器才可以。

EAP 目前仅支持jdk8+ servlet3.1+ javaee7.0 推荐使用tomcat8.5+ jetty9.4.11+ 所以后期我们会更换 MultipartResolver 的实现 不向下兼容

其他参考