springmvc与Servlet3.0不依赖common包实现文件上传

Servlet3.0以上的版本不再需要第三方组件Commons.io和commons-fileupload,可以使用@MultipartConfig注解在Servlet上进行配置上传,也可以在web.xml上进行配置。

1、修改web.xml配置上传参数


	springmvc
	org.springframework.web.servlet.DispatcherServlet
	
		contextConfigLocation
		classpath:spring/springmvc.xml
	
		
	
        
            5242880
            20971520
            0
        

  • file-size-threshold:数字类型,当文件大小超过指定的大小后将写入到硬盘上。默认是0,表示所有大小的文件上传后都会作为一个临时文件写入到硬盘上。

  • location:指定上传文件存放的目录。当我们指定了location后,我们在调用Part的write(String fileName)方法把文件写入到硬盘的时候可以,文件名称可以不用带路径,但是如果fileName带了绝对路径,那将以fileName所带路径为准把文件写入磁盘,不建议指定。

  • max-file-size:数值类型,表示单个文件的最大大小。默认为-1,表示不限制。当有单个文件的大小超过了max-file-size指定的值时将抛出IllegalStateException异常。

  • max-request-size:数值类型,表示一次上传文件的最大大小。默认为-1,表示不限制。当上传时所有文件的大小超过了max-request-size时也将抛出IllegalStateException异常。

2、修改springmvc-servlet.xml配置信息

将原有的文件上传通用解析器更换为标准解析器,修改后的配置如下所示:

 
    
    
 
  

3、修改springmvc-servlet.xml配置信息

${message}

 
  

multiple="multiple"这个属性是HTML5新增加的属性,一些旧版的浏览器可能不支持,使用JavaScript可以处理一下。

4、定义Action

 @RequestMapping(value="/file3Save",method=RequestMethod.POST)
    public String file3Save(Model model,MultipartFile[] files,HttpServletRequest request) throws Exception{
        //文件存放的位置
        String path=request.getSession().getServletContext().getRealPath("/files");
        System.out.println(path);
        String msg="";
        for (MultipartFile file : files) {
            //保存文件
            File tempFile=new File(path, file.getOriginalFilename());
            file.transferTo(tempFile);
            msg+="";
        }
        model.addAttribute("message", msg);
        return "up/upfile3";
    }

5、测试运行

你可能感兴趣的:(springmvc与Servlet3.0不依赖common包实现文件上传)