上传文件

                                    上传文件

互联网中,上传图片,头像,证件,文本等都十分常见,这就涉及到了上传功能。Spring MVC为上传提供了良好的支持。通过MultipartResolver(Multipart)处理,对于MultipartResolver而言,它只是一个接口

MultipartResolver(接口):

  • CommonsMultipartResolver(实现类):第三方包,可以在所有Spring版本使用
  • StandardServletMultipartResolver(实现类):Spring3.1版本后的产物,依赖servlet3.0或更高。

1. Spring MVC 文件上传基本步骤(下面是xml方式,注解也可以。)

  1. 添加文件上传相关依赖(jar包:commons-fileupload)
  2. 配置对上传文件对象的解析(spring的核心配置文件)
  3. 编写文件上传表单(请求方式为post,enctype必须为multipart/form-data)
  4. 编写对应的控制层对象处理文件上传(通过mutilpartFile参数接收文件)

2.Spring MVC文件上传依赖

添加文件上传时需要的依赖(pom.xml)


   commons-fileupload
   commons-fileupload
   1.3.3

3. 定义文件上传的视图解析 

在spring的核心配置文件中添加对象解析


    
    
    
    
    
    

说明:配置对象解析时,bean的id一定要指定,而且官方规定必须为multipartResolver

4. 定义文件上传的控制层对象UploadController

@RequestMapping("/upload/")
@Controller
public class UploadController {
   @RequestMapping("uploadUI")
   public String uploadUI(){
       return "upload";
   }
   @RequestMapping("doUpload")
   public ModelAndView doUpload(MultipartFile upfile) throws IOException{
       //获取文件名以及文件大小,检测是否获得文件相关数据
       String fileName=upfile.getOriginalFilename();
       long size=upfile.getSize();
       System.out.println(fileName+"/"+size);
       //构建文件目标对象,这个对象对应的文件路径必须是存在的或者通过file对象自己创建
       File dest=new File("D:/SSMWORK/"+fileName);
       //transferto实现文件上传
       upfile.transferTo(dest);
       //封装数据返回
       ModelAndView mv=new ModelAndView("upload");
       mv.addObject("msg", "upload ok");
       return mv;
   }
}

说明:在控制层方法接收请求中file类型的数据时需要借助MultipartFile 类型的参数对象,其参数名要求与表单中type为file的参数名相同

5. 定义文件上传页面

在WEB-INF/pages目录下创建一个upload.jsp,然后创建上传表单


   

文件上传

${msg}


说明:定义表单时,提交方式必须为postenctype必须为multipart/form-data

你可能感兴趣的:(框架,Spring,MVC,文件上传)