文件上传依赖:
<!--文件上传-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
springmvc 配置文件的配置
<!--配置文件上传 id必须为 multipartResolver -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--注入文件上传下载大小限制单位字节 2M=2097152 字节默认:没有限制·-->
<property name="maxUploadSize" value="20971520"/>
</bean>
<h1>文件上传</h1>
<form action="${pageContext.request.contextPath}/upload" method="post" enctype="multipart/form-data">
<input type="file" name="img">
<input type="submit" value="上传文件">
</form>
</body>
@RequestMapping("upload")
public String upload(MultipartFile img, HttpServletRequest request) throws IOException {
System.out.println("文件名" + img.getOriginalFilename());
System.out.println("img.getName() = " + img.getName());
System.out.println("img.getSize() = " + img.getSize());
System.out.println("img.getContentType() = " + img.getContentType());
//文件上传
//根据upload相对路径获取部署到服务之后绝对路径
String path = request.getSession().getServletContext().getRealPath("/upload");
//修改文件名称
String extension = FilenameUtils.getExtension(img.getOriginalFilename());
String newFileName = UUID.randomUUID().toString().replace("-", "") + "." + extension;
//生成当天日期目录
LocalDate now = LocalDate.now();
File dataDir = new File(path, now.toString());
if (!dataDir.exists()) {
dataDir.mkdirs();
}
//将文件上传到upload对应的绝对路径
img.transferTo(new File(dataDir, newFileName));
return "redirect:/index.jsp";
}
文件下载
//处理文件下载
@RequestMapping("/download")
public void download(String fileName, HttpServletRequest request, HttpServletResponse response) throws IOException {
System.out.println("下载的文件名称" + fileName);
//根据下载相对目录获取下载目录在服务器部署之后绝对目录
String realPath = request.getSession().getServletContext().getRealPath("/down");
System.out.println(realPath + "===" + fileName);
//通过文件输入流读取文件
FileInputStream is = new FileInputStream(new File(realPath, fileName));
//获取响应输出流
response.setContentType("text/plain; charset=UTF-8");
//以附件形式下载 attachment:附件 inline 在线打开
response.setHeader("content-disposition", "attachment;fileName=" + URLEncoder.encode(fileName,"UTF-8"));
ServletOutputStream outputStream = response.getOutputStream();
//使用工具类处理下载流复制
IOUtils.copy(is, outputStream);
IOUtils.closeQuietly(is);
IOUtils.closeQuietly(outputStream);
// int len;
// byte[] bytes = new byte[1024];
// while ((len = is.read(bytes)) != -1) {
// outputStream.write(bytes, 0, len);
// }
//
// is.close();
// outputStream.close();
}