pom
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>
commons-fileupload包含commons-io
上传
@RequestMapping("/upload")
public String get(HttpServletRequest request) throws IOException {
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
// 判断请求是否是一个上传文件的请求
String upFilePath = "";
if (multipartResolver.isMultipart(request)) {
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
Iterator<String> iterator = multiRequest.getFileNames();
// 遍历文件
while (iterator.hasNext()) {
// 取得上传文件
MultipartFile file = multiRequest.getFile(iterator.next());
// 取得当前上传文件的文件名称
String filename = file.getOriginalFilename();
// 获取用户的根目录
String userHome = System.getProperties().getProperty("user.home");
String path = userHome + File.separator + "upload" + File.separator + UUID.randomUUID().toString() + filename;
File saveFile = new File(path);
if (!saveFile.getParentFile().exists()) {
saveFile.getParentFile().mkdirs();
}
// 文件保存到本地
file.transferTo(saveFile);
upFilePath = path;
}
return upFilePath;
} else {
return "该请求中不包含文件!";
}
}
下载
@RequestMapping("/download")
public void download(@RequestParam("path") String path, HttpServletResponse response) throws Exception {
File file = new File(path);
if (!file.exists()) {
throw new Exception("文件不存在");
}
FileInputStream fileInputStream = FileUtils.openInputStream(file);
OutputStream outputStream = response.getOutputStream();
String fileName = URLEncoder.encode(file.getName(), "UTF-8");
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
IOUtils.copyLarge(fileInputStream, outputStream, new byte[1024]);
IOUtils.closeQuietly(fileInputStream);
IOUtils.closeQuietly(outputStream);
}