共计 1024 个字符,预计需要花费 3 分钟才能阅读完成。
文件上传
针对前端 form-data 模式提交的文件能够间接应用 spring 的 web 包下的 MultipartFile
类进行接管:
@PostMapping("/upload")
public R<String> uploadImg(MultipartFile file){return R.success();
}
准存到本地有两个办法,一个是应用 MultipartFile
的transferTo()
办法,需注意这个办法入参写入的目标地址要应用绝对路径;二是获取输出流通过传统的形式写入。
文件下载
这里采纳的下载方式为间接向浏览器输入文件流的形式:
@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
的输入流即可。
正文完
发表至: springboot
2022-07-11