Spring Boot中的文件上传/下载
文件上传
-
文件上传
用户将本地计算机中的文件上传到服务器的过程称之为文件上传
-
开发思路
- 提供一个上传页面,提交方式必须是post,enctype属性必须为mulyipart/form-data
- 开发上传controller
-
controller实现
@PostMapping("/upload") public String upload(MultipartFile file) throws IOException { //文件名 String originalFilename = file.getOriginalFilename(); //上传文件,参数1:将文件写入到那个目录,参数2:文件名 file.transferTo(new File(realPath,originalFilename)); //修改文件名 // String ext = originalFilename.substring(originalFilename.lastIndexOf(".")); // String newFileName = new SimpleDateFormat("yyyyMMdd").format(new Date())+ext; return originalFilename; }
-
修改yml
spring: servlet: #修改默认传输文件大小 multipart: max-request-size: 120MB #运行请求传递文件大小最大为10M(默认) max-file-size: 120MB #运行服务器可以处理的最大文件大小为1M(默认) #指定文件上传目录 file: upload: dir: E:\program\workspeaceIDEA\springboot-classes #指定本地测试上传目录
文件下载
-
文件下载
将服务器某个资源文件下载到用户本地计算机过程称之为文件下载
-
开发思路
- 确定项目中那些资源可以被下载
- 将可以被下载的资源放入服务器指定位置
- 开发下载控制器
-
controller
/** * 文件下载 * @param fileName * @param response * @throws IOException */ @RequestMapping("download") public void download(String fileName, HttpServletResponse response) throws IOException { log.debug("当前下载文件名为:{}",fileName); log.debug("当前下载文件目录为:{}",realPathDownload); //1.指定目录中读取文件 File file = new File(realPathDownload,fileName); //2.将文件读取为文件输入流 FileInputStream is = new FileInputStream(file); //2.5获取响应流之前 一定要设置以附件形式下载 attachment:附件 response.setHeader("content-disposition","attachment;filename="+URLEncoder.encode(fileName,"UTF-8")); //3.获取响应输出流 ServletOutputStream os = response.getOutputStream(); //4.输入流复制给输出流 FileCopyUtils.copy(is,os); //5.释放资源 is.close(); }
-
yml
#指定文件下载目录 file: upload: dir: E:\program\workspeaceIDEA\springboot-classes #指定下载目录