码迷,mamicode.com
首页 > 编程语言 > 详细

SpringMvc 文件上传

时间:2015-10-17 23:45:22      阅读:240      评论:0      收藏:0      [点我收藏+]

标签:

springMVC默认的解析器里面是没有加入对文件上传的解析的,使用springmvc对文件上传的解析器来处理文件上传的时需要用springmvc提供的MultipartResolver的申明,又因为CommonsMultipartResolver实现了MultipartResolver接口,所以我们可以在springmvc配置文件中这样配置:

 

Xml代码  技术分享
  1. <bean id="multipartResolver"  
  2.         class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  
  3.         <property name="defaultEncoding" value="utf-8" />  
  4.         <property name="maxUploadSize" value="10485760000" />  
  5.         <property name="maxInMemorySize" value="40960" />  
  6.     </bean>  

 

首先引入文件上传所需要的包,commons-logging-*.jar commons-io-*.jar  commons-fileupload-*.jar

新建一个JSP页面.

Html代码  技术分享
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"  
  2.     pageEncoding="UTF-8"%>  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  4. <html>  
  5. <head>  
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  7. <title>文件上传</title>  
  8. </head>  
  9. <body>  
  10.     <%--<form action="user/fileUpload" method="post" enctype="multipart/form-data">--%>  
  11.     <form action="user/fileUpload" method="post" enctype="multipart/form-data">  
  12.         <input type="file" name="fileUpload" />  
  13.         <input type="submit" value="上传" />  
  14.     </form>  
  15. </body>  
  16. </html>  

 

 springmvc上传文件的形式有很多,这里我介绍两种.

 

第一种,看Controller

Java代码  技术分享
  1. package gd.hz.springmvc.controller;  
  2.   
  3. import java.io.File;  
  4. import java.io.IOException;  
  5.   
  6. import org.springframework.stereotype.Controller;  
  7. import org.springframework.web.bind.annotation.RequestMapping;  
  8. import org.springframework.web.bind.annotation.RequestMethod;  
  9. import org.springframework.web.bind.annotation.RequestParam;  
  10. import org.springframework.web.multipart.commons.CommonsMultipartFile;  
  11. import org.springframework.web.servlet.ModelAndView;  
  12.   
  13. @Controller("userController")  
  14. @RequestMapping("user")  
  15. public class UserController {  
  16.   
  17.     // 处理文件上传一  
  18.     @RequestMapping(value = "fileUpload", method = RequestMethod.POST)  
  19.     public ModelAndView fileUpload(  
  20.             @RequestParam("fileUpload") CommonsMultipartFile file) {  
  21.         // 获取文件类型  
  22.         System.out.println(file.getContentType());  
  23.         // 获取文件大小  
  24.         System.out.println(file.getSize());  
  25.         // 获取文件名称  
  26.         System.out.println(file.getOriginalFilename());  
  27.   
  28.         // 判断文件是否存在  
  29.         if (!file.isEmpty()) {  
  30.             String path = "D:/" + file.getOriginalFilename();  
  31.             File localFile = new File(path);  
  32.             try {  
  33.                 file.transferTo(localFile);  
  34.             } catch (IllegalStateException e) {  
  35.                 e.printStackTrace();  
  36.             } catch (IOException e) {  
  37.                 e.printStackTrace();  
  38.             }  
  39.         }  
  40.         return new ModelAndView("dataSuccess");  
  41.     }  
  42. }  

类CommonsMultipartFile为我们提供了许多对文件处理的方法.例如文件大小,上传文件名称,文件类型,具体用法可以查看spring的文档.transferTo就是将文件输出到指定地方.

 

文件上传的第二种方法,这种方法比较常用:

Java代码  技术分享
  1. package gd.hz.springmvc.controller;  
  2.   
  3. import java.io.File;  
  4. import java.io.IOException;  
  5. import java.util.Iterator;  
  6.   
  7. import javax.servlet.http.HttpServletRequest;  
  8.   
  9. import org.springframework.stereotype.Controller;  
  10. import org.springframework.web.bind.annotation.RequestMapping;  
  11. import org.springframework.web.bind.annotation.RequestMethod;  
  12. import org.springframework.web.multipart.MultipartFile;  
  13. import org.springframework.web.multipart.MultipartHttpServletRequest;  
  14. import org.springframework.web.multipart.commons.CommonsMultipartResolver;  
  15.   
  16. @Controller("userController")  
  17. @RequestMapping("user")  
  18. public class UserController {  
  19.   
  20.     // 处理文件上传二  
  21.     @RequestMapping(value = "fileUpload2", method = RequestMethod.POST)  
  22.     public String fileUpload2(HttpServletRequest request)  
  23.             throws IllegalStateException, IOException {  
  24.         // 设置上下方文  
  25.         CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(  
  26.                 request.getSession().getServletContext());  
  27.   
  28.         // 检查form是否有enctype="multipart/form-data"  
  29.         if (multipartResolver.isMultipart(request)) {  
  30.             MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;  
  31.   
  32.             Iterator<String> iter = multiRequest.getFileNames();  
  33.             while (iter.hasNext()) {  
  34.   
  35.                 // 由CommonsMultipartFile继承而来,拥有上面的方法.  
  36.                 MultipartFile file = multiRequest.getFile(iter.next());  
  37.                 if (file != null) {  
  38.                     String fileName = "demoUpload" + file.getOriginalFilename();  
  39.                     String path = "D:/" + fileName;  
  40.   
  41.                     File localFile = new File(path);  
  42.                     file.transferTo(localFile);  
  43.                 }  
  44.   
  45.             }  
  46.         }  
  47.         return "dataSuccess";  
  48.     }  
  49. }  

 MultipartHttpServletRequest提供了更加灵活的方法,可以获取多个文件和文件名,可以遍历获得每个文件.

SpringMvc 文件上传

标签:

原文地址:http://www.cnblogs.com/thinkpad/p/4888546.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!