我有一个使用 Java Spring Boot 2.4.2 创建的 RESTful API。
我最近遇到的主要问题之一是,分段文件上传工作正常,但几天后相同的代码将无法工作。重新启动 RESTFul JAR 应用程序后,它将恢复正常。
Postman 中显示的错误:无法存储文件。错误
与此相关的代码在这里:
try {
FileUploadUtil.saveFile(uploadPath, file.getOriginalFilename(), file);
} catch (IOException e) {
throw new RuntimeException("Could not store the file. Error: " + e.getMessage());
}
和 FileUploadUtil 类:
public class FileUploadUtil {
public static void saveFile(String uploadDir, String fileName, MultipartFile multipartFile) throws IOException {
Path uploadPath = Paths.get(uploadDir);
if (!Files.exists(uploadPath)) {
Files.createDirectories(uploadPath);
}
try (InputStream inputStream = multipartFile.getInputStream()) {
Path filePath = uploadPath.resolve(fileName);
Files.copy(inputStream, filePath, StandardCopyOption.REPLACE_EXISTING);
} catch (IOException ioe) {
throw new IOException("Could not save uploaded file: " + fileName, ioe);
}
}
public static File fileFor(String uploadDir, String id) {
return new File(uploadDir, id);
}}
调用上述第一部分代码的主要 POST API 方法头是:
@PostMapping(value = "/clients/details/{clientDetailsId}/files/{department}", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
@PreAuthorize("hasAuthority('PERSONNEL') or hasAuthority('CUSTODIAN') or hasAuthority('ADMIN')")
public ResponseEntity<ClientDetails> createClientDetailsFiles(@PathVariable("clientDetailsId") long clientDetailsId,
@PathVariable("department") String department,
@RequestPart(value = "FORM_SEC_58", required = false) MultipartFile[] FORM_SEC_58_file,@RequestPart(value = "FORM_SEC_78", required = false) MultipartFile[] FORM_SEC_78_file,
@RequestPart(value = "FORM_SEC_105", required = false) MultipartFile[] FORM_SEC_105_file,
@RequestPart(value = "FORM_SEC_51", required = false) MultipartFile[] FORM_SEC_51_file,
@RequestPart(value = "FORM_SEC_76", required = false) MultipartFile[] FORM_SEC_76_file)
和 application.properties 方面:
spring.servlet.multipart.enabled=true
spring.servlet.multipart.max-file-size=90MB
spring.servlet.multipart.max-request-size=90MB
谁能告诉你有什么问题吗?