Spring:文件上传时不允许使用方法
Posted
技术标签:
【中文标题】Spring:文件上传时不允许使用方法【英文标题】:Spring: Method Not Allowed on file uploading 【发布时间】: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
请求和标头(如果有的话)吗?
【参考方案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 ,问题和你的答案之间没有真正的区别以上是关于Spring:文件上传时不允许使用方法的主要内容,如果未能解决你的问题,请参考以下文章