MultipartResolver实现文件上传功能
springMVC默认的解析器里面是没有加入对文件上传的解析的,,使用springmvc对文件上传的解析器来处理文件上传的时需要用springmvc提供的MultipartResolver的申明,又因为CommonsMultipartResolver实现了MultipartResolver接口,所以我们可以在springmvc配置文件中这样配置:
首先引入文件上传所需要的包,commons-logging-*.jarcommons-io-*.jar commons-fileupload-*.jar
新建一个JSP页面.
<%@pagelanguage="java"contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>文件上传 <%----%>
springmvc上传文件的形式有很多,这里我介绍两种.
第一种,看Controller
packagegd.hz.springmvc.controller; importjava.io.File; importjava.io.IOException; importorg.springframework.stereotype.Controller; importorg.springframework.web.bind.annotation.RequestMapping; importorg.springframework.web.bind.annotation.RequestMethod; importorg.springframework.web.bind.annotation.RequestParam; importorg.springframework.web.multipart.commons.CommonsMultipartFile; importorg.springframework.web.servlet.ModelAndView; @Controller("userController") @RequestMapping("user") publicclassUserController{ //处理文件上传一 @RequestMapping(value="fileUpload",method=RequestMethod.POST) publicModelAndViewfileUpload( @RequestParam("fileUpload")CommonsMultipartFilefile){ //获取文件类型 System.out.println(file.getContentType()); //获取文件大小 System.out.println(file.getSize()); //获取文件名称 System.out.println(file.getOriginalFilename()); //判断文件是否存在 if(!file.isEmpty()){ Stringpath="D:/"+file.getOriginalFilename(); FilelocalFile=newFile(path); try{ file.transferTo(localFile); }catch(IllegalStateExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); } } returnnewModelAndView("dataSuccess"); } }
类CommonsMultipartFile为我们提供了许多对文件处理的方法.例如文件大小,上传文件名称,文件类型,具体用法可以查看spring的文档.transferTo就是将文件输出到指定地方.
文件上传的第二种方法,这种方法比较常用:
packagegd.hz.springmvc.controller; importjava.io.File; importjava.io.IOException; importjava.util.Iterator; importjavax.servlet.http.HttpServletRequest; importorg.springframework.stereotype.Controller; importorg.springframework.web.bind.annotation.RequestMapping; importorg.springframework.web.bind.annotation.RequestMethod; importorg.springframework.web.multipart.MultipartFile; importorg.springframework.web.multipart.MultipartHttpServletRequest; importorg.springframework.web.multipart.commons.CommonsMultipartResolver; @Controller("userController") @RequestMapping("user") publicclassUserController{ //处理文件上传二 @RequestMapping(value="fileUpload2",method=RequestMethod.POST) publicStringfileUpload2(HttpServletRequestrequest) throwsIllegalStateException,IOException{ //设置上下方文 CommonsMultipartResolvermultipartResolver=newCommonsMultipartResolver( request.getSession().getServletContext()); //检查form是否有enctype="multipart/form-data" if(multipartResolver.isMultipart(request)){ MultipartHttpServletRequestmultiRequest=(MultipartHttpServletRequest)request; Iteratoriter=multiRequest.getFileNames(); while(iter.hasNext()){ //由CommonsMultipartFile继承而来,拥有上面的方法. MultipartFilefile=multiRequest.getFile(iter.next()); if(file!=null){ StringfileName="demoUpload"+file.getOriginalFilename(); Stringpath="D:/"+fileName; FilelocalFile=newFile(path); file.transferTo(localFile); } } } return"dataSuccess"; } }
MultipartHttpServletRequest提供了更加灵活的方法,可以获取多个文件和文件名,可以遍历获得每个文件.
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。