1

我正在编写REST控制器,它应该允许用户上传文件。春季:方法不允许上传文件

我有一个类

@RestController 
@RequestMapping("/profiles/{userId}/files") 
public class FileController { 

    @PostMapping(path = "upload") 
    public String uploadFile(@PathVariable("userId") long userId, 
              @RequestParam("file") MultipartFile file) throws IOException { 
    //some logic here 

    } 

,但我得到

{ 
"timestamp": 1502301243676, 
"status": 405, 
"error": "Method Not Allowed", 
"message": "Method Not Allowed", 
"path": "/profiles/12351/files/upload" 
} 

难道我做错了什么?没有@PathVariable的发布请求工作正常,但我需要这个。下面的代码

@RestController 
    @RequestMapping("/profiles/{userId}/files") 
    public class FileController { 

     @RequestMapping(value = "upload", method = RequestMethod.POST) 
     public String uploadFile(@PathVariable("userId") long userId, 
               @RequestParam("file") MultipartFile file) throws IOException { 
     //some logic here 

     } 
+0

你是如何调用这个资源? –

+0

@RossiRobinsion via Postman –

+0

可能需要'CSRF'令牌。 –

回答

-1

使用谢谢你,伙计们。至少我找到了原因。 这是我的错:我有许多不同的控制器,其中一个是 "/profiles/{userId}/{source}",其中GET方法映射到同一端点。 所以这个控制器试图处理我的请求,但不能。 我改变了它的路径,我的第一个变成了工作。 感谢您的关注和答复。

+0

@PostMapping没有“方法”参数。这是相当于@RequestMapping(方法= POST) –

+0

@NikolayRomanov修改后的代码,由于 – Akash

+0

与requestmethod交@Akash requestmapping相当于postmapping,您的代码是相同的 –

0