文件上传

针对前端form-data模式提交的文件能够间接应用spring的web包下的MultipartFile类进行接管:

@PostMapping("/upload")    public R<String> uploadImg(MultipartFile file){        return R.success();    }

准存到本地有两个办法,一个是应用MultipartFiletransferTo()办法,需注意这个办法入参写入的目标地址要应用绝对路径;二是获取输出流通过传统的形式写入。

文件下载

这里采纳的下载方式为间接向浏览器输入文件流的形式:

@GetMapping("/download")    public void downloadImg(@RequestParam(value = "name", required = false) @NotBlank(message = "文件名称为空") String name,                            HttpServletResponse response){        try {            commonService.doDownload(name, response.getOutputStream());        } catch (IOException e) {            log.error(e.getMessage());            throw new RuijiException(ExceptionCodeEnum.FILE_DOWNLOAD_FAIL);        }    }

这个controller办法为应用文件名称下载对应文件,业务层下载逻辑为:

public void doDownload(String name, OutputStream outputStream){        String destFilePath = System.getProperty("user.dir") + "\\img";        File file = new File(destFilePath + "\\" + name);        try {            FileUtils.copyFile(file, outputStream);        } catch (IOException e) {            log.error(e.getMessage());            log.error("文件下载失败");            throw new RuijiException(ExceptionCodeEnum.FILE_DOWNLOAD_FAIL);        }    }

这里应用commons-io包的FileUtils工具类实现的文件流输入,间接输入到HttpservletResponse的输入流即可。