本文主要是介绍文件上传磁盘空间泄露,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
使用文件上传,程序会创建临时文件,请求结束会自动删除文件,但是需要手动释放流,否则程序一直占用文件。此时查看目录,文件是不存在的,但是文件所占用空间不会释放。也就是磁盘空间泄露。
错误案例
1、上传接口 ,只要调用了 getInputStream(),就会有问题
@RequestMapping("/upload")public ResponseEntity<String> upload(@RequestParam(value = "file") MultipartFile multipartFile) throws Exception {System.out.println("文件名:" + multipartFile.getOriginalFilename());// 数据流转换存储(防止流失效)InputStream inputStream = multipartFile.getInputStream();{// 处理逻辑}return new ResponseEntity<>("success", HttpStatus.OK);}
2、上传文件
3、lsof -p pid | grep deleted #标记删除,都是依然被程序占用
正确案例:
@RequestMapping("/upload")public ResponseEntity<String> upload(@RequestParam(value = "file") MultipartFile multipartFile) throws Exception {System.out.println("文件名:" + multipartFile.getOriginalFilename());// 数据流转换存储(防止流失效)InputStream inputStream = multipartFile.getInputStream();inputStream.close();{// 处理逻辑}return new ResponseEntity<>("success", HttpStatus.OK);}
这篇关于文件上传磁盘空间泄露的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!