最近朋友问我springMVC实现文件上传下载,在这里我就简单的解释一下,以下是实现的步骤。
一、文件上传
1.
2.依赖jar的坐标
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
3.springmvc中的配置
<!-- id的值是固定的-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--设置上传文件最大5M-->
<property name="maxUploadSize" value="5242880"/>
</bean>
**4.**编写handler
@RequestMapping("testUploadFile")
public String testUploadFile(MultipartFile uploadFile, HttpServletRequest request) throws IOException {
// 文件原名,如xxx.jpg
String originalFilename = uploadFile.getOriginalFilename();
// 获取文件的扩展名,如jpg
String extendName = originalFilename.substring(originalFilename.lastIndexOf(".") + 1, originalFilename.length());
String uuid = UUID.randomUUID().toString();
// 新的文件名字
String newName = uuid + "." + extendName;
String realPath = request.getSession().getServletContext().getRealPath("/uploads");
// 解决文件夹存放文件数量限制,按日期存放
String datePath = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
File floder = new File(realPath + "/" + datePath);
if(!floder.exists()) {
floder.mkdirs();
}
uploadFile.transferTo(new File(floder,newName));
return "success";
}
二、文件下载
1.前端页面
<a href="/download?filename=1.jpg">下载1.jpg</a>
2.handler
@RequestMapping("/download")
public void download(String fileName, HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition","attachment;filename="+fileName);
Files.copy(Paths.get("E:\\upload\\2019-11-15","1.jpg"),response.getOutputStream());
}
在实现的过程中编译版本不能太低,推荐使用1.8,否则Files.copy可能会一直异常。
文件上传的过程中不推荐返回值为“”,否则可能会一直上传失败。
以上的过程就是使用SpirngMVC实现文件上传下载的过程,对编程感兴趣的朋友们可以点一下关注。后期我会继续发出技术方面的知识。