HTTP状态405 - 不支持请求方法“POST”

时间:2012-01-26 21:14:15

标签: spring spring-security

我正在使用弹簧,弹簧安全,冬眠。有一个jsp页面,我试图上传文件,后端我有一个控制器来捕获和存储上传的文件。我正在使用tomcat。我使用spring security进行登录验证。上传文件时出现以下错误 HTTP状态405 - 不支持请求方法“POST” 有什么想法吗?

2 个答案:

答案 0 :(得分:4)

您需要确保您的请求处理程序能够接受POST。您还可以将Spring配置为使用MultipartResolver来帮助您获取请求部件。

配置MultiPartResolver

@Bean(name = "mulitpartResolver")
public MultipartResolver multipartResolver() {
    if (multipartResolver == null) {
        multipartResolver = new CommonsMultipartResolver();
    }
    return multipartResolver;
}

这是请求映射:

@RequestMapping(method = RequestMethod.POST, value = "/some/post/url")
public void postFile(MultipartHttpServletRequest request) {
    MultipartFile multipartFile = request.getFileMap().get("keyForFileInFormPost");
    ...
}

请注意,有时这不适用于Spring Security。你可以在这里查看我的博客文章,使用带弹簧安全性的multipartrequestresolvers寻求帮助:

http://www.adamweigold.com/2012/01/using-multpartrequestresolvers-with.html

答案 1 :(得分:0)

在Spring Context中定义bean“multipartResolver”

    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- one of the properties available; the maximum file size in bytes -->
        <property name="maxUploadSize" value="2097152"/>
    </bean>

并使用

@ResponseBody
@RequestMapping(value = "/{tenantId}/getEntityInfo", method = RequestMethod.POST)
public ResponseEntity<String> getEntityInfo(
        @RequestParam(value = "xml", required = false) MultipartFile xml) {
}