spring MVC 文件上传

1.导入jar包

  apache-commons-fileupload.jar

  apache-commons-io.jar

2.在配置文件中,增加CommonsMultipartResoler配置

1 <!-- 处理文件上传 -->
2 <bean id="multipartResolver"  
3     class="org.springframework.web.multipart.commons.CommonsMultipartResolver" >  
4     <property name="defaultEncoding" value="gbk"/> <!-- 默认编码 (ISO-8859-1) -->  
5     <property name="maxInMemorySize" value="10240"/> <!-- 最大内存大小 (10240)-->  
6     <property name="uploadTempDir" value="/temp/"/> <!-- 上传后的目录名 (WebUtils#TEMP_DIR_CONTEXT_ATTRIBUTE) -->  
7     <property name="maxUploadSize" value="-1"/> <!-- 最大文件大小,-1为无限止(-1) -->  
8 </bean>

  注意:uploadTempDir是指临时文件目录,

3.jsp页面

 1 <%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
 2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 3 <html>
 4     <head>
 5         <title>测试springmvc中上传的实现</title>
 6     </head>
 7     <body>
 8 <form action="upload.do"  method="post" enctype="multipart/form-data">
 9             <input type="text" name="name" />
10             <input type="file" name="file" />
11             <input type="submit" />
12         </form>
13     </body>
14 </html>

  注意:method="post" enctype="multipart/form-data",form一定要加上这句

4.Controller

 1 package com.sxt.web;
 2 
 3 import java.io.File;
 4 import java.util.Date;
 5 
 6 import javax.servlet.ServletContext;
 7 
 8 import org.springframework.stereotype.Controller;
 9 import org.springframework.web.bind.annotation.RequestMapping;
10 import org.springframework.web.bind.annotation.RequestMethod;
11 import org.springframework.web.bind.annotation.RequestParam;
12 import org.springframework.web.context.ServletContextAware;
13 import org.springframework.web.multipart.commons.CommonsMultipartFile;
14 
15 @Controller
16 public class FileUploadController implements ServletContextAware {
17 
18     private ServletContext servletContext;
19     
20     @Override
21     public void setServletContext(ServletContext context) {
22         this.servletContext  = context;
23     }
24     
25     @RequestMapping(value="/upload.do", method = RequestMethod.POST)
26     public String handleUploadData(String name,@RequestParam("file") CommonsMultipartFile file){
27         if (!file.isEmpty()) {
28                String path = this.servletContext.getRealPath("/tmp/");  //获取本地存储路径
29                System.out.println(path);
30                String fileName = file.getOriginalFilename();
31                String fileType = fileName.substring(fileName.lastIndexOf("."));
32                System.out.println(fileType); 
33                File file2 = new File(path,new Date().getTime() + fileType); //新建一个文件
34                try {
35                     file.getFileItem().write(file2); //将上传的文件写入新建的文件中
36                } catch (Exception e) {
37                     e.printStackTrace();
38                }
39                return "redirect:upload_ok.jsp";
40             }else{
41                 return "redirect:upload_error.jsp";
42             }
43     }
44 }

文件上传Action就不说了

注意:spring和struts2一样,如果要用到servletContext的话,就要实现ServletContextAware 接口,然后set方法就可以了

posted @ 2014-08-06 20:59  刘尊礼  阅读(242)  评论(0)    收藏  举报