我正在处理有关 MultipartFile 的奇怪行为。
我的项目是一个接收文本文件的 Spring Boot 后端。该文本文件作为 MultipartFile 出现。我想将此文件发送到辅助 Spring Boot 后端,该后端将在我的主后端读取该文件之前向该文件添加一些内容。这些内容更改不是强制性的,如果它们不存在,程序也不会崩溃。
要将 MultipartFile 发送到另一个后端,我必须将 MultipartFile 转换为 java.io.File。在执行此操作时,MultipartFile 会被破坏。
创建 java.io.File 后,BufferedReader 无法读取原始 MultipartFile。
重度编辑:
我的项目规格发生了变化,额外的后端被取消了。不过我仍然很好奇这里发生了什么。以下代码重现了我遇到的异常:
@CrossOrigin
@RestController
@RequestMapping("/dragon")
public class TestController {
@PostMapping("/killFile")
public String sendInFileHere(@Valid @RequestBody MultipartFile multipartFile) {
if (multipartFile == null) {
throw new IllegalArgumentException("File has to be Present");
}
File file = new File(multipartFile.getOriginalFilename());
try {
multipartFile.transferTo(file);
} catch (IOException e) {
e.printStackTrace();
}
BufferedReader reader;
try {
InputStream is = multipartFile.getInputStream(); //exception is thrown …Run Code Online (Sandbox Code Playgroud)