当前位置: 首页 > 知识库问答 >
问题:

Spring MVC上传文件-HTTP状态405-不支持请求方法'POST'

康烨伟
2023-03-14

我试图通过JSP和控制器上传文件,但我总是得到

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

类型状态报告

不支持消息请求方法“POST”

描述指定的HTTP方法不允许用于请求的资源。

这是我的表单(只是所有JSP页面的一部分):

<form method="POST" enctype="multipart/form-data" action="product.file.add">
    <input name="productId" type="hidden" />
    <tr>
        <th>Foto: </th>
        <td><input type="file" name="file" /></td>
    </tr>
    <tr>
        <td class="bt" ><input type="submit" value="Add image" /></td>
        <td class="bt" ><input type="submit" value="Continue without image" /></td>
    </tr>
</form>

控制器的我的一部分(现在只有丢失的文件名):

@RequestMapping(value = "/admin/product.file.add", method = RequestMethod.POST)
    public String productFileUpload(@RequestParam("file") MultipartFile file,
            @RequestParam("productId") int productId) {
        logger.info(file.getName());
        return "redirect:/admin/product";
}

还有一部分servlet-context.xml

<beans:bean id="multipartResolver"
    class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>

但我总是得到:

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

你能帮帮我吗(

我的控制器没有所有的方法:

@Controller
public class ProductController {

    @Autowired
    private ProductDao productDao;

    @Autowired
    private ProducerDao producerDao;

    @Autowired
    private SectionDao sectionDao;

    @Autowired
    private TasteDao tasteDao;

    @Autowired
    private CategoryDao categoryDao;

    private static final Logger logger = LoggerFactory
            .getLogger(ProductController.class);


    @RequestMapping(value = "/admin/productfileadd", method = RequestMethod.POST)
    public String productFileUpload(@RequestParam("file") MultipartFile file,
            @RequestParam("productId") int productId) {
        logger.info(file.getName());
        return "redirect:/admin/product";
    }       


}

我的应用程序运行于:

http://localhost:8080/prosvaly/

我用在所有相同的“动作风格”和它的作品。在这种形式下,当我点击按钮。它把我引向正确的方向。我试图改变我的行动

action="/prosvaly/admin/productfileadd

但还是同样的错误。当我将方法类型从POST更改为GET时,会出现另一个错误:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.web.multipart.MultipartException: The current request is not a multipart request

所以我认为这个问题并没有发生,因为GET方法可以找到相同的URL

共有3个答案

唐涛
2023-03-14

我有同样的问题,我的解决方案不同。在我的例子中,我使用的是基于注释的配置,我用@Controller注释了我的类,但我从未告诉配置类扫描我的包中控制器所在的位置,方法是用

@ComponentScan(basePackages = "com.controllers.location.package") 
岳佐
2023-03-14

@刚需映射的值为"/admin/product.file.add",form的动作为action="product.file.add"。我认为应该是action="/admin/product.file.add"

或者您可以尝试使用

宇文和同
2023-03-14

主要问题是Spring安全。我解决了这个问题。Sprinf安全性阻止了我的URL,但我不知道为什么。

“我解决了这个问题,”我补充道${{u csrf.parameterName}=${{u csrf.token}结束我的表单操作

<form method="POST" action="uploadOneFile**?${_csrf.parameterName}=${_csrf.token}**" enctype="multipart/form-data">

现在它起作用了!

 类似资料:
  • 我有以下控制器: 13-feb-2016 16:55:09.442警告[http-apr-8080-exec-9]org.springframework.web.servlet.PageNotFound.HandleHttpRequestMethodNotSupported请求方法“Put”不受支持 我不明白这怎么可能。下面是我的依赖项: 编辑2: 2016-02-14 12:30:56 DEBU

  • 问题内容: 我收到此错误: 我正在尝试做的是创建一个带有下拉框的表单,该表单会根据在另一个下拉框中选择的其他值进行填充。例如,当我在框中选择一个名称时,应运行.jsp页面中的函数,然后提交提交的页面,然后在框中再次加载相应的值。 但是我收到此HTTP状态405错误。我在互联网上搜索了解决方案,但找不到任何有帮助的方法。这是我的代码的相关部分: jsp页面的一部分 控制器的一部分: 我怎么会得到这个

  • 我收到这个错误:< code>HTTP状态405 -不支持请求方法“POST ” 我想做的是创建一个带有下拉框的表单,该下拉框根据在另一个下拉框中选择的其他值进行填充。例如,当我在框中选择一个名称时,应该运行. jsp页面中的函数,然后提交的页面再次加载框中的相应值。 但是我收到此HTTP状态405错误。我已经在互联网上搜索了解决方案,但找不到任何有帮助的东西。以下是我的代码的相关部分: jsp页

  • 我有Spring MVC的Spring Security。当我尝试注册时,它给了我405个不支持的“帖子”。我已在安全配置中禁用csrf令牌。让我知道我哪里出错了? 我的登录页面: 授权由LoginController处理: 这是我的Spring Security配置类:

  • 当我尝试实现Spring Security性时,出现以下错误- 控制器: web.xml Spring-security.xml 登录名。jsp 错误:- http://localhost:8080/EmployeeManagement/j_spring_security_check

  • 该场景是用户选择一些产品,然后单击进行支付。在这里,我将他/她重定向到IPG(银行互联网支付网关),并在付款完成和定稿时传递我的返回url。在我添加spring security之前,一切正常。 但是如果在一些内部视图中发布这个url,一切都会恢复正常。 这是正常工作(spring security启用,一切正常) 在浏览器中查看银行IPG的来源(https://pna.shaparak.ir/C