1.导入上传下载依赖:
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<!-- 添加thymeleaf -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
2.上传:
1)前端页面:
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.w3.org/1999/xhtml"> <head> <meta charset="UTF-8"> <title>Title</title> <script> function exproExcel() { } </script> </head> <body> <h1>Spring Boot</h1> <a href="/Expro/excel">导出</a> <p th:text="${hello}"></p> <p>文件上传</p> <form action="/upload/file" method="post" enctype="multipart/form-data"> 上传:<input type="file" name="upfile"/> <button type="submit">提交</button> </form> </body> </html>
2)编写跳到上传页面接口:
@Controller public class HelloController { @RequestMapping("/hello") public String helloIndex(HashMap<String, Object> map){ map.put("hello","Hello SpringBoot!"); return "/index"; } }
3)编写接收上传文件接口:
@Controller @RequestMapping("/upload") public class UploadFileController { @RequestMapping(value = "/file") public @ResponseBody String uploadFile(@RequestParam("upfile") MultipartFile file, HttpServletRequest request){ String message =""; try { if(!file.isEmpty()){ FileOutputStream outputStream = new FileOutputStream("F:\XIAOYAO"+"\"+file.getOriginalFilename()); outputStream.write(file.getBytes()); outputStream.flush(); outputStream.close(); message="上传成功!"; } } catch (UnsupportedEncodingException e) { e.printStackTrace(); message="上传失败!"; } catch (IOException e) { e.printStackTrace(); message="上传失败!"; } return message; } }
3.下载:
1)编写下载接口:
@RestController @RequestMapping("/Expro") public class ExprotExcelController { @RequestMapping("/excel") public void exproExcel(HttpServletRequest request, HttpServletResponse response) throws Exception{ String path = ClassLoader.getSystemResource("").toURI().getPath(); //获取类加载地址 System.out.println(path); File file = new File(path+"excelTempalte/模板.xlsx"); FileInputStream fileInputStream = new FileInputStream(file); //读取文件 response.setHeader("Content-disposition", "attachment;filename=test.xlsx"); //设置响应头和文件名字 OutputStream outputStream = response.getOutputStream(); //创建缓存区 byte [] buffe = new byte[1024]; int len =0; while ((len =fileInputStream.read(buffe))>0){ outputStream.write(buffe,0,len); } fileInputStream.close(); outputStream.flush(); outputStream.close(); } }