多文件上传,使用的MultipartFile

来源:互联网 发布:天猫美工招聘 编辑:程序博客网 时间:2024/05/17 09:43
基本的SpringMVC的搭建在我的上一篇文章里已经写过了,这篇文章主要说明一下如何使用SpringMVC进行表单上的文件上传以及多个文件同时上传的步骤

SpringMVC 基础教程 框架分析:http://blog.csdn.net/swingpyzf/article/details/8885459

SpringMVC 基础教程 简单入门实例:http://blog.csdn.net/swingpyzf/article/details/8904205


文件上传项目的源码下载地址:http://download.csdn.net/detail/swingpyzf/6979915


一、配置文件:
SpringMVC 用的是 的MultipartFile来进行文件上传 所以我们首先要配置MultipartResolver:用于处理表单中的file

[html] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. <!-- 配置MultipartResolver 用于文件上传 使用spring的CommosMultipartResolver -->  
  2.     <beans:bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"  
  3.         p:defaultEncoding="UTF-8"  
  4.         p:maxUploadSize="5400000"  
  5.         p:uploadTempDir="fileUpload/temp"  
  6.      >  
  7.     </beans:bean>  

其中属性详解:
defaultEncoding="UTF-8" 是请求的编码格式,默认为iso-8859-1
maxUploadSize="5400000" 是上传文件的大小,单位为字节
uploadTempDir="fileUpload/temp" 为上传文件的临时路径


二、创建一个简单的上传表单:

[html] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. <body>  
  2. <h2>文件上传实例</h2>  
  3.   
  4.   
  5. <form action="fileUpload.html" method="post" enctype="multipart/form-data">  
  6.     选择文件:<input type="file" name="file">  
  7.     <input type="submit" value="提交">   
  8. </form>  
  9.   
  10.   
  11. </body>  

注意要在form标签中加上enctype="multipart/form-data"表示该表单是要处理文件的,这是最基本的东西,很多人会忘记然而当上传出错后则去找程序的错误,却忘了这一点


三、编写上传控制类

1、创建一个控制类: FileUploadController和一个返回结果的页面list.jsp
2、编写提交表单的action:

[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. //通过Spring的autowired注解获取spring默认配置的request  
  2.     @Autowired  
  3.     private HttpServletRequest request;  
  4.   
  5.     /*** 
  6.      * 上传文件 用@RequestParam注解来指定表单上的file为MultipartFile 
  7.      *  
  8.      * @param file 
  9.      * @return 
  10.      */  
  11.     @RequestMapping("fileUpload")  
  12.     public String fileUpload(@RequestParam("file") MultipartFile file) {  
  13.         // 判断文件是否为空  
  14.         if (!file.isEmpty()) {  
  15.             try {  
  16.                 // 文件保存路径  
  17.                 String filePath = request.getSession().getServletContext().getRealPath("/") + "upload/"  
  18.                         + file.getOriginalFilename();  
  19.                 // 转存文件  
  20.                 file.transferTo(new File(filePath));  
  21.             } catch (Exception e) {  
  22.                 e.printStackTrace();  
  23.             }  
  24.         }  
  25.         // 重定向  
  26.         return "redirect:/list.html";  
  27.     }  
  28.   
  29.     /*** 
  30.      * 读取上传文件中得所有文件并返回 
  31.      *  
  32.      * @return 
  33.      */  
  34.     @RequestMapping("list")  
  35.     public ModelAndView list() {  
  36.         String filePath = request.getSession().getServletContext().getRealPath("/") + "upload/";  
  37.         ModelAndView mav = new ModelAndView("list");  
  38.         File uploadDest = new File(filePath);  
  39.         String[] fileNames = uploadDest.list();  
  40.         for (int i = 0; i < fileNames.length; i++) {  
  41.             //打印出文件名  
  42.             System.out.println(fileNames[i]);  
  43.         }  
  44.         return mav;  
  45.     }  



3、使用SpringMVC注解RequestParam来指定表单中的file参数;
4、指定一个用于保存文件的web项目路径
5、通过MultipartFile的transferTo(File dest)这个方法来转存文件到指定的路径。


到此基本的文件上传就结束了。


MultipartFile类常用的一些方法:


String getContentType()//获取文件MIME类型
InputStream getInputStream()//后去文件流
String getName() //获取表单中文件组件的名字
String getOriginalFilename() //获取上传文件的原名
long getSize() //获取文件的字节大小,单位byte
boolean isEmpty() //是否为空
void transferTo(File dest) //保存到一个目标文件中。


四、多文件上传。

多文件上传其实很简单,和上传其他相同的参数如checkbox一样,表单中使用相同的名称,然后action中将MultipartFile参数类定义为数组就可以。
接下来实现:

1、创建一个上传多文件的表单:

[html] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. <body>  
  2.     <h2>上传多个文件 实例</h2>  
  3.   
  4.   
  5.     <form action="filesUpload.html" method="post"  
  6.         enctype="multipart/form-data">  
  7.         <p>  
  8.             选择文件:<input type="file" name="files">  
  9.         <p>  
  10.             选择文件:<input type="file" name="files">  
  11.         <p>  
  12.             选择文件:<input type="file" name="files">  
  13.         <p>  
  14.             <input type="submit" value="提交">  
  15.     </form>  
  16. </body>  


2、编写处理表单的action,将原来保存文件的方法单独写一个方法出来方便共用:
[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. /*** 
  2.      * 保存文件 
  3.      * @param file 
  4.      * @return 
  5.      */  
  6.     private boolean saveFile(MultipartFile file) {  
  7.         // 判断文件是否为空  
  8.         if (!file.isEmpty()) {  
  9.             try {  
  10.                 // 文件保存路径  
  11.                 String filePath = request.getSession().getServletContext().getRealPath("/") + "upload/"  
  12.                         + file.getOriginalFilename();  
  13.                 // 转存文件  
  14.                 file.transferTo(new File(filePath));  
  15.                 return true;  
  16.             } catch (Exception e) {  
  17.                 e.printStackTrace();  
  18.             }  
  19.         }  
  20.         return false;  
  21.     }  
  22. 3、编写action:  
  23.     @RequestMapping("filesUpload")  
  24.     public String filesUpload(@RequestParam("files") MultipartFile[] files) {  
  25.         //判断file数组不能为空并且长度大于0  
  26.         if(files!=null&&files.length>0){  
  27.             //循环获取file数组中得文件  
  28.             for(int i = 0;i<files.length;i++){  
  29.                 MultipartFile file = files[i];  
  30.                 //保存文件  
  31.                 saveFile(file);  
  32.             }  
  33.         }  
  34.         // 重定向  
  35.         return "redirect:/list.html";  
  36.     }  

最后运行项目上传文件:
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 多囊卵巢综合症治不好怎么办 胳膊受了风发麻怎么办 胳膊抻筋了很疼怎么办 腰抻了怎么办最有效 孩子胳膊抻着了怎么办 胳膊伤筋了疼怎么办 宝宝胳膊抻了疼怎么办 练完普拉提头晕怎么办 生完孩子腰背疼怎么办 宝宝不肯把屎尿怎么办 存的电话删除了怎么办 脚踝的韧带断了怎么办 买了双鞋子想退怎么办 鞋子大了一码怎么办 nba篮球大师身体素质满了怎么办 钉鞋大了一码怎么办 篮球鞋鞋垫会向里面跑怎么办 穿高跟鞋脚肿了怎么办 衣服弄到单车油怎么办 高低床孩子摔下来怎么办 量血压时老紧张怎么办 牛仔外套的扣子掉了怎么办 裤子的裤筒大了怎么办 衣服拉链驰坏了怎么办 小脚裤裤腿紧了怎么办 地垫粘地板了怎么办 棉麻衬衣皱了怎么办 麻料衣服烫皱了怎么办 在京东买一双奥康鞋没有防伪怎么办 足球鞋丁掉了一颗怎么办 鼻子有点大想变小该怎么办 阿勒泰小东沟风景区边防证怎么办 孩子上一年级了学习很差怎么办 孩子作息时间不规律怎么办 冬天冻脸怎么办小妙招 冬天冻脚怎么办小妙招 冬天脚冷怎么办小妙招 初中生不爱学习父母该怎么办 早孕办公室买新办公桌怎么办 一年级学生专注度差怎么办 pscs6界面字体太小怎么办