SpringMVC上传文件

一、在pom.xml中添加依赖

<!-- io包 -->
	<dependency>
		<groupId>commons-io</groupId>
		<artifactId>commons-io</artifactId>
		<version>${commonsio.version}</version>
	</dependency>
	<!-- 加入fileupload依赖包 -->
	<dependency>
		<groupId>commons-fileupload</groupId>
		<artifactId>commons-fileupload</artifactId>
		<version>${commons-fileupload.version}</version>
	</dependency>

二、spring-mvc.xml配置文件上传

<!-- 自动扫描controller包下的所有类,使其认为spring mvc的控制器 -->
	<context:component-scan base-package="com.leech.controller" />
	
	<mvc:annotation-driven/>
	
	<!-- 配置静态资源不经过spring mvc -->
	<mvc:resources location="/static/" mapping="/static/**"/>
	
	<!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/jsp/"/>
		<property name="suffix" value=".jsp"/>
	</bean>  

	<!-- 文件上传配置 -->
	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  
		<property name="defaultEncoding" value="utf-8" />  
		<property name="maxUploadSize" value="10485760000" />  
		<property name="maxInMemorySize" value="40960" />  
	</bean>

三、编写UploadController上传控制器

import org.apache.log4j.Logger;

import java.io.File;
import java.io.IOException;
import java.util.Date;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.commons.CommonsMultipartFile;

@Controller
@RequestMapping("/upload")
public class UploadController {
	/**
	 * Logger for this class
	 */
	private static final Logger LOG = Logger.getLogger(UploadController.class);

	@RequestMapping("/req")
	public String req() {
		return "upload";
	}

	@RequestMapping("/uploadHandler")
	public String uploadHandler(@RequestParam(value = "file") CommonsMultipartFile file)throws IllegalStateException, IOException {
		long startTime = System.currentTimeMillis();
		LOG.debug("文件长度: " + file.getSize());  
		LOG.debug("文件类型: " + file.getContentType());  
		LOG.debug("文件名称: " + file.getName());  
		LOG.debug("文件原名: " + file.getOriginalFilename());  
		String path = "E:/temp/" + new Date().getTime()+ file.getOriginalFilename();

		File newFile = new File(path);
		// 通过CommonsMultipartFile的方法直接写文件(注意这个时候)
		file.transferTo(newFile);
		long endTime = System.currentTimeMillis();
		LOG.debug("方法二的运行时间:" + String.valueOf(endTime - startTime)+ "ms");
		return "success";
	}
}

四、编写jsp页面

1、index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<a href="upload/req">springmvc-upload文件上传测试</a>
</body>
</html>

2、upload.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="uploadHandler" method="post" enctype="multipart/form-data">  
		<input type="file" name="file" />  
		<input type="submit" value="上传" />  
	</form>  
</body>
</html>

3、success.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	上传文件成功!<br/>
	<a href="req">继续上传</a>
</body>
</html>

如果上传多个文件,可以使用MultipartFile[] files数组。

你可能感兴趣的:(SpringMVC上传文件)