Spring Boot MultipartFile 的值始终为 null
Spring Boot MultipartFile always has value of null
所以我正在为 JavaScript 前端制作一个 RESTful API 后端,并想将文件上传到 Google 云存储。我有这个功能来处理文件上传:
@RequestMapping(value = "/uploadFile", method = RequestMethod.POST, consumes = { "multipart/form-data" })
public ResponseEntity<?> uploadFile(@ModelAttribute("file") FileDTO fileDTO) {
FunctionResponse uploadResponse = cloudStorage.uploadObject(fileDTO.getFile());
if (uploadResponse.successful()) {
return new ResponseEntity<>(uploadResponse.getMessage(), HttpStatus.OK);
} else {
return new ResponseEntity<>(uploadResponse.getMessage(), HttpStatus.BAD_REQUEST);
}
}
我的文件 DTO class 看起来像这样:
public class FileDTO implements Serializable {
private MultipartFile file;
public MultipartFile getFile() {
return file;
}
}
然而,每当我尝试访问 MultipartFile 时,它总是抛出 java.lang.NullPointerException
。
我已经尝试了来自具有类似问题的线程的各种 SO 答案,但 none 到目前为止有效。
我的 application.properties 中有 multipart.enabled=true
。
如有任何帮助,我们将不胜感激,如果您需要更多信息,请告诉我。
当multipart/form-data
请求到达时,必须使用@RequestParam
获取数据,而不是@ModelAttribute
+如果你需要的请求值是一个文件,那么,它应该反序列化为 MultipartFile
对象。
@RequestMapping(value = "/uploadFile", method = RequestMethod.POST, consumes = {"multipart/form-data"})
public ResponseEntity<?> uploadFile(@RequestParam(name = "file") MultipartFile file) {
// your handle ...
}
所以我正在为 JavaScript 前端制作一个 RESTful API 后端,并想将文件上传到 Google 云存储。我有这个功能来处理文件上传:
@RequestMapping(value = "/uploadFile", method = RequestMethod.POST, consumes = { "multipart/form-data" })
public ResponseEntity<?> uploadFile(@ModelAttribute("file") FileDTO fileDTO) {
FunctionResponse uploadResponse = cloudStorage.uploadObject(fileDTO.getFile());
if (uploadResponse.successful()) {
return new ResponseEntity<>(uploadResponse.getMessage(), HttpStatus.OK);
} else {
return new ResponseEntity<>(uploadResponse.getMessage(), HttpStatus.BAD_REQUEST);
}
}
我的文件 DTO class 看起来像这样:
public class FileDTO implements Serializable {
private MultipartFile file;
public MultipartFile getFile() {
return file;
}
}
然而,每当我尝试访问 MultipartFile 时,它总是抛出 java.lang.NullPointerException
。
我已经尝试了来自具有类似问题的线程的各种 SO 答案,但 none 到目前为止有效。
我的 application.properties 中有 multipart.enabled=true
。
如有任何帮助,我们将不胜感激,如果您需要更多信息,请告诉我。
当multipart/form-data
请求到达时,必须使用@RequestParam
获取数据,而不是@ModelAttribute
+如果你需要的请求值是一个文件,那么,它应该反序列化为 MultipartFile
对象。
@RequestMapping(value = "/uploadFile", method = RequestMethod.POST, consumes = {"multipart/form-data"})
public ResponseEntity<?> uploadFile(@RequestParam(name = "file") MultipartFile file) {
// your handle ...
}