1.配置文件
#是否启用springmvc多分部上传
spring.servlet.multipart.enabled=true
# 指定默认上传的文件夹
spring.servlet.multipart.location=F:/springbootlearn
# 限制单个文件最大大小(bytes),这里设置为100KB
spring.servlet.multipart.max-file-size=102400
# 限制所有文件最大大小(bytes),这里设置为100KB
spring.servlet.multipart.max-request-size=102400
2.控制器
展示了三种上传方式:
- MultipartHttpServletRequest接口
- MultipartFile接口
- Part接口
package com.zyf.springMVC.mvcuploadfile;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.Part;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
/**
* mvc文件上传
* MultipartHttpServletRequest接口
* MultipartFile接口
* Part接口
*/
@Controller
@RequestMapping(value = { "/mvcuploadfile" })
public class MvcUploadFileController {
/** 跳转到文件上传页面 */
@RequestMapping("/muf1")
public String muf1() {
return "mvcuploadfile/muf1";
}
/**
* 上传文件MultipartHttpServletRequest接口
*/
@RequestMapping("/muf2")
@ResponseBody
public Map<String, Object> muf2(HttpServletRequest reqeust) {
MultipartHttpServletRequest msr = null;
if (reqeust instanceof MultipartHttpServletRequest) {
msr = (MultipartHttpServletRequest) reqeust;
} else {
return dealResultMap(false, "上传失败");
}
MultipartFile multipartFile = msr.getFile("file");//注意从请求中取"file"参数
String fileName = multipartFile.getOriginalFilename();
File file = new File(fileName);
try {
multipartFile.transferTo(file);
} catch (IllegalStateException | IOException e) {
e.printStackTrace();
return dealResultMap(false, "上传失败");
}
return dealResultMap(true, "上传成功");
}
/**
* 上传文件MultipartHttpServletRequest接口
* 注意从请求中取"file"参数
*/
@RequestMapping("/muf3")
@ResponseBody
public Map<String, Object> muf3(@RequestParam(value = "file") MultipartFile multipartFile) {
String fileName = multipartFile.getOriginalFilename();
File file = new File(fileName);
try {
multipartFile.transferTo(file);
} catch (IllegalStateException | IOException e) {
e.printStackTrace();
return dealResultMap(false, "上传失败");
}
return dealResultMap(true, "上传成功");
}
/**
* 上传文件Part接口
* 注意从请求中取"file"参数
*/
@RequestMapping("/muf4")
@ResponseBody
public Map<String, Object> muf4(@RequestParam(value = "file") Part partFile) {
String fileName = partFile.getSubmittedFileName();
try {
partFile.write(fileName);
} catch (IOException e) {
e.printStackTrace();
return dealResultMap(false, "上传失败");
}
return dealResultMap(true, "上传成功");
}
private Map<String, Object> dealResultMap(Boolean issuccess, String msg) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("issuccess", issuccess);
map.put("msg", msg);
return map;
}
}
3.前台页面
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<!-- action使用相对路径 -->
<form method="post"
action="./muf4"
enctype="multipart/form-data">
<input type="file" name="file" value="请选择文件"></input>
<input type="submit" name="submit" value="上传"></input>
</form>
</body>
</html>
github:https://github.com/zhangyangfei/SpringBootLearn.git中的springMVC工程。