springmvc-servlet.xml中加入如下代码:
<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>
方式一:
@RequestMapping("/upload2")
public String upload2(HttpServletRequest request,
HttpServletResponse response) throws IllegalStateException,
IOException {
// 解析器解析request的上下文
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(
request.getSession().getServletContext());
// 先判断request中是否包涵multipart类型的数据,
if (multipartResolver.isMultipart(request)) {
// 再将request中的数据转化成multipart类型的数据
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
// 取得request中的所有文件名
System.out.println(multiRequest.getContentLength());
Iterator<String> iter = multiRequest.getFileNames();
while (iter.hasNext()) {
// 取得上传文件
MultipartFile multipartFile = multiRequest
.getFile((String) iter.next());
System.out.println("文件长度: " + multipartFile.getSize());
System.out.println("文件类型: " + multipartFile.getContentType());
System.out.println("文件名称: " + multipartFile.getName());
System.out.println("文件原名: "
+ multipartFile.getOriginalFilename());
System.out.println("========================================");
if (multipartFile != null) {
// 取得当前上传文件的文件名称
String fileName = multipartFile.getOriginalFilename();
// 如果名称不为“”,说明该文件存在,否则说明该文件不存在
if (fileName.trim() != "") {
// 定义上传路径
String path = request.getSession().getServletContext()
.getRealPath("/upload")
+ File.separator + fileName;
System.out.println(path);
File localFile = new File(path);
multipartFile.transferTo(localFile);
// multipartFile.getInputStream();//可以获取输入流
}
}
}
}
return "/success";
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!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>
<script type="text/javascript">
</script>
</head>
<body>
<h>添加用户</h>
<form name="userForm" action="/SpringMVC/file/upload2" method="post"
enctype="multipart/form-data">
选择文件:<input type="file" name="afile"> <br />
选择文件:<input type="file" name="bfile"><br />
选择文件:<input type="file" name="cfile"> <br />
<input type="submit" value="上传">
</form>
</body>
</html>
注意,<input type="file" name="afile">中name必须不一样,否则Iterator<String> iter = multiRequest.getFileNames()只能得到一个。
方式二:
@RequestMapping("/upload3")
public String upload3(HttpServletRequest request,
HttpServletResponse response, @RequestParam MultipartFile[] afile)
throws IllegalStateException, IOException {
// 定义上传路径
String path = request.getSession().getServletContext()
.getRealPath("/upload")
+ File.separator;
for (MultipartFile multipartFile : afile) {
if (!multipartFile.isEmpty()) {
System.out.println("文件长度: " + multipartFile.getSize());
System.out.println("文件类型: " + multipartFile.getContentType());
System.out.println("文件名称: " + multipartFile.getName());
System.out.println("文件原名: "
+ multipartFile.getOriginalFilename());
System.out.println("========================================");
File localFile = new File(path
+ multipartFile.getOriginalFilename());
System.out.println(localFile);
multipartFile.transferTo(localFile);
}
}
return "/success";
}
参数MultipartFile[] afile必须要有@RequestParam注解。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!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>
<script type="text/javascript">
</script>
</head>
<body>
<h>添加用户</h>
<form name="userForm" action="/SpringMVC/file/upload2" method="post"
enctype="multipart/form-data">
选择文件:<input type="file" name="afile"> <br />
选择文件:<input type="file" name="afile"><br />
选择文件:<input type="file" name="afile"> <br />
<input type="submit" value="上传">
</form>
</body>
</html>
这里,<input type="file" name="afile">中,name必须一致,而且upload3()中的MultipartFile[] afile参数名相同。