【问题标题】:Spring: Method Not Allowed on file uploadingSpring:文件上传时不允许使用方法
【发布时间】:2018-01-17 18:22:21
【问题描述】:

我正在编写 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 的发布请求可以正常工作,但我需要这个。

【问题讨论】:

  • 你是如何调用这个资源的?
  • @RossiRobinsion 通过邮递员
  • 可能需要CSRF Token。
  • @RossiRobinsion 它看起来不像这样。我目前没有任何安全措施。
  • 您能告诉我们POSTMAN 请求和标头(如果有的话)吗?

标签: spring spring-mvc spring-restcontroller http-status-code-405


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    使用下面的代码

    @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
    
           }
    

    【讨论】:

    • @PostMapping 没有“方法”参数。它相当于@RequestMapping(method = POST)
    • @Akash requestmapping with requestmethod post相当于postmapping,你的代码是一样的
    • @AmerQarabsa requestmapping 包含方法,根据 spring 文档,docs.spring.io/spring/docs/current/javadoc-api/org/… 请看一下,我不知道你为什么不赞成我的回答。
    • @Akash 是 requestmapping + requestMethod.post = postmapping ,问题和你的答案之间没有真正的区别
    猜你喜欢
    • 2016-09-03
    • 1970-01-01
    • 2021-06-02
    • 1970-01-01
    • 2014-09-19
    • 1970-01-01
    • 2019-04-22
    • 2018-03-14
    • 2018-03-31
    相关资源
    最近更新 更多