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方法就可以了
浙公网安备 33010602011771号