首页 > 代码库 > Spring 中Apache Commons上传文件

Spring 中Apache Commons上传文件

在用Apache Commons完成文件上传功能需有的几步:

1、导入两个架包:commons-fileupload.jar和commons-io.jar

maven中:

 1 <dependency> 2         <groupId>commons-fileupload</groupId> 3         <artifactId>commons-fileupload</artifactId> 4         <version>1.3</version> 5     </dependency> 6      7     <dependency> 8         <groupId>commons-io</groupId> 9         <artifactId>commons-io</artifactId>10         <version>2.4</version>11     </dependency>

2、修改配置文件,在spring-servlet中添加一个bean,代码如下:

 1 <!-- 处理上传文件 --> 2     <bean id="multipartResolver" 3         class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 4         <!-- set the max upload size100MB --> 5          6         <!-- 设置最大文件大小 --> 7         <property name="maxUploadSize"> 8             <value>104857600</value> 9         </property>10         <!-- 设置最大内存大小 --> 11         <property name="maxInMemorySize">12             <value>10240</value>13         </property>14         <!-- 设置上传后的目录名 -->15         <property name="uploadTempDir">16         <value>"./upload/"</value>17         </property> 18     </bean>19     

注意这里配置的上传的目录名是临时的,并不是上传文件后文件所在的位置,这里只是缓存用的。文件上传后真正的位置要在Controller中指出

3、jsp页面和Controller中的内容

jsp页面:

1 <form action="./handleUploadData" method="post" enctype="multipart/form-data">2    文件名:<input type="text" name="name"><br>3           <input type="file" name="file">4 <input type="submit" class="btn btn-primary" value=http://www.mamicode.com/"上传">5 </form>

这里的文件名是在为了在保存上传文件时便于区分文件,上传的文件已用户输入的文件名显示

Controller:

 1  private ServletContext servletContext; 2      3     @Override 4     public void setServletContext(ServletContext context){ 5         this.servletContext =context; 6     } 7      8     @RequestMapping("**/handleUploadData") 9     //在上传时,@RequestParam("file")必须加,不然就会出现错误10     public String handleUploadData(String name,@RequestParam("file") CommonsMultipartFile file){11         12         if(!file.isEmpty()){13             String path=this.servletContext.getRealPath("/upload/");  //获取本地存储路径    14             15             String fileName=file.getOriginalFilename();16             17             String fileType=fileName.substring(fileName.lastIndexOf("."));  //获取上传文件的类型18             System.out.println(fileType);19             File file2=new File(path,name+fileType);  //新建一个文件20             21             22             23             try {24                 file.getFileItem().write(file2);  //将上传的文件写入新的文件中25             } catch (Exception e) {26                 // TODO Auto-generated catch block27                 e.printStackTrace();28             }29             return "upload_ok";30         }31         else{32             return "upload_error";33         }34     }