MultipartException:当前请求不是多部分请求

新手上路,请多包涵

我正在尝试制作一个宁静的控制器来上传文件。我已经看到了 这个 并制作了这个控制器:

 @RestController
public class MaterialController {

    @RequestMapping(value="/upload", method= RequestMethod.POST)
    public String handleFileUpload(
            @RequestParam("file") MultipartFile file){
        String name = "test11";
        if (!file.isEmpty()) {
            try {
                byte[] bytes = file.getBytes();
                BufferedOutputStream stream =
                        new BufferedOutputStream(new FileOutputStream(new File(name + "-uploaded")));
                stream.write(bytes);
                stream.close();
                return "You successfully uploaded " + name + " into " + name + "-uploaded !";
            } catch (Exception e) {
                return "You failed to upload " + name + " => " + e.getMessage();
            }
        } else {
            return "You failed to upload " + name + " because the file was empty.";
        }
    }
}

然后我用邮递员发送了一个pdf:

在此处输入图像描述

但是服务器因错误而崩溃:

 .MultipartException: Current request is not a multipart request

我再次找到 了这个,并添加了一个 bean.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

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

不幸的是, 它仍然抱怨同样的错误。

原文由 Sal-laS 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

当您使用 Postman 进行多部分请求时,请不要在 Header 中指定自定义 Content-Type。所以 Postman 中的 Header 选项卡应该是空的。邮递员将确定表单数据边界。在 Postman 的正文选项卡中,您应该选择表单数据并选择文件类型。您可以在 https://github.com/postmanlabs/postman-app-support/issues/576 找到相关讨论

原文由 abaghel 发布,翻译遵循 CC BY-SA 3.0 许可协议

看起来问题是对服务器的请求不是多部分请求。基本上你需要修改你的客户端表单。例如:

 <form action="..." method="post" enctype="multipart/form-data">
  <input type="file" name="file" />
</form>

希望这可以帮助。

原文由 Javier Z. 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题