1. spring使用了apache-commons下得上传组件,因此,我们需要引入两个jar包:
1. apache-commons-fileupload.jar 2. apache-commons-io.jar
2. 在springmvc-servlet.xml配置文件中,增加CommonsMultipartResoler配置:
<!-- 处理文件上传 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver" >
<property name="defaultEncoding" value="gbk"/> <!-- 默认编码 (ISO-8859-1) -->
<property name="maxInMemorySize" value="10240"/> <!-- 最大内存大小 (10240)-->
<property name="uploadTempDir" value="/upload/"/> <!-- 上传后的目录名 (WebUtils#TEMP_DIR_CONTEXT_ATTRIBUTE) -->
<property name="maxUploadSize" value="-1"/> <!-- 最大文件大小,-1为无限止(-1) -->
</bean>
3. 建立upload.jsp页面,内容如下:
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>测试springmvc中上传的实现</title>
</head>
<body>
<form action="upload.do" method="post" enctype="multipart/form-data">
<input type="text" name="name" />
<input type="file" name="file" />
<input type="submit" />
</form>
</body>
</html>
4. 建立控制器,代码如下:
package com.sxt.web;
import java.io.File;
import java.util.Date;
import javax.servlet.ServletContext;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.context.ServletContextAware;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
@Controller
public class FileUploadController implements ServletContextAware {
private ServletContext servletContext;
@Override
public void setServletContext(ServletContext context) {
this.servletContext = context;
}
@RequestMapping(value="/upload.do", method = RequestMethod.POST)
public String handleUploadData(String name,@RequestParam("file")[一定要加。]CommonsMultipartFile file){
if (!file.isEmpty()) {
String path = this.servletContext.getRealPath("/tmp/"); //获取本地存储路径
System.out.println(path);
String fileName = file.getOriginalFilename();
String fileType = fileName.substring(fileName.lastIndexOf("."));
System.out.println(fileType);
File file2 = new File(path,new Date().getTime() + fileType); //新建一个文件
try {
file.getFileItem().write(file2); //将上传的文件写入新建的文件中
} catch (Exception e) {
e.printStackTrace();
}
return "redirect:upload_ok.jsp";
}else{
return "redirect:upload_error.jsp";
}
}
}
5. 建立upload_ok.jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<h1>上传成功!</h1>
</body>
</html>
6. 建立upload_error.jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<h1>上传失败!</h1>
</body>
</html>
发布项目,运行测试://localhost:8080/springmvc03/upload.jsp