Java 无法上传带@Pathvariable 可选的文件
Java can't upload file with @Pathvariable optional
我尝试构建一个具有上传文件功能的todoapp。现在我想可以在任务中上传文件,或者只是在没有任务的情况下上传文件。为此,我需要 @PathVariable 注释是可选的。
这是我的控制器:
@PostMapping("/upload/{taskId}")
private ResponseEntity<String> uploadFile(@CurrentUser UserPrincipal userPrincipal, @RequestParam("file") MultipartFile[] file, @PathVariable(required = false) String taskId) {
fileService.upload(userPrincipal.getUser(), file, taskId);
return new ResponseEntity<>("File uploaded", HttpStatus.OK);
}
如果我尝试使用 TaskId 上传它,它会起作用。但是当我尝试在没有 taskId 的情况下上传时,它不起作用。我收到错误:
“405 方法不允许”[=13=]
截图:
有人知道如何解决这个问题吗?
如果你想使用 @PathVariable
作为可选,请确保绑定两个路径:@PostMapping(value = {"/upload/{taskId}", "/upload"})
.
如果您不 post,taskId
spring 将寻找处理 "/upload"
而不是 "/upload/{taskId}"
的控制器
我个人会使用 RequestParam
而不是 PathVariable
作为可选参数
我尝试构建一个具有上传文件功能的todoapp。现在我想可以在任务中上传文件,或者只是在没有任务的情况下上传文件。为此,我需要 @PathVariable 注释是可选的。
这是我的控制器:
@PostMapping("/upload/{taskId}")
private ResponseEntity<String> uploadFile(@CurrentUser UserPrincipal userPrincipal, @RequestParam("file") MultipartFile[] file, @PathVariable(required = false) String taskId) {
fileService.upload(userPrincipal.getUser(), file, taskId);
return new ResponseEntity<>("File uploaded", HttpStatus.OK);
}
如果我尝试使用 TaskId 上传它,它会起作用。但是当我尝试在没有 taskId 的情况下上传时,它不起作用。我收到错误:
“405 方法不允许”[=13=]
截图:
有人知道如何解决这个问题吗?
如果你想使用 @PathVariable
作为可选,请确保绑定两个路径:@PostMapping(value = {"/upload/{taskId}", "/upload"})
.
如果您不 post,taskId
spring 将寻找处理 "/upload"
而不是 "/upload/{taskId}"
我个人会使用 RequestParam
而不是 PathVariable
作为可选参数