首页 > 代码库 > 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 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。