spring boot进行上传文件
1、pom文件添加依赖
<!-- 添加thymeleaf --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
2、就可以直接在代码中进行实现上传下载的功能了
上传代码如下
@Override @RequestMapping("/upload") public JsonResult uploadFile(MultipartFile file) { //进行上传操作 }
下载代码如下
@Override @RequestMapping("/open/v1/file/downloadFile") public void downloadFile(String url, HttpServletResponse response) { if (url != null) { try { URL urls = new URL(url); URLConnection urlCon = urls.openConnection(); InputStream in = urlCon.getInputStream(); //设置响应类型 response.setContentType("application/octet-stream");//应用程序强制下载 response.setContentType("multipart/form-data"); //设置响应头,对文件进行url编码 String fileName = urls.getFile(); fileName = fileName.replaceAll("/", "_"); String name = URLEncoder.encode(fileName, "UTF-8"); response.setHeader("Content-Disposition", "enclosure;filename=" + name); response.setContentLength(urlCon.getContentLength()); OutputStream out = response.getOutputStream(); byte[] b = new byte[1024]; int len = 0; while ((len = in.read(b)) != -1) { out.write(b, 0, len); } out.flush(); out.close(); in.close(); } catch (IOException e) { logger.error(e.getMessage()); throw new SunawException("文件下载异常"); } } }
然后上传下载的最基础功能就实现了。
然而基本的上传操作只能上传1M以内的文件,那么如何上传更大的文件呢。具体操作请看下文....
在yaml文件里面进行添加配置信息
spring: servlet: multipart: max-file-size: 50MB #单个文件最大上传大小 max-request-size: 50MB #单次请求最大上传大小
这样就可控制上传文件的大小格式了。
然而那些年久失修的项目,已进行上传就会上传失败为什么呢,主要是因为我们系统会定期清理文件,会将springboot一启动项目就会生成的tomcat临时文件进行删除掉,所以我们需要改变上传文件临时文件的存放目录。具体实现看上一篇文章。
tomcat临时目录