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

SPRING REST:请求被拒绝,因为找不到多部分边界

颛孙昆
2023-03-14

我为Spring3Rest多部分文件上传做了一个POC。它工作正常。但是当我尝试与我的应用程序集成时,我遇到了问题。

它抛出以下异常:

org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request;
nested exception is org.apache.commons.fileupload.FileUploadException:
the request was rejected because no multipart boundary was found**"

如果我在代码的任何部分出错了,请告诉我。

豆:

<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
 <property name="order" value="1" />
 <property name="mediaTypes">
 <map>
   <entry key="json" value="application/json" />
   <entry key="xml" value="application/xml" />
   <entry key="file" value="multipart/mixed" />
 </map>
</property>
</bean>
<!-- multipart resolver -->
 <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="50000000" />
 </bean>

控制器:

@Controller
public class MultipleFilesRecieve {
    @RequestMapping ( value = "/saveMultiple", method = RequestMethod.POST )
        public String save( FileUploadForm uploadForm ) {
        List<MultipartFile> files = uploadForm.getFiles( );
        List<String> fileNames = new ArrayList<String>( );
        if ( null != files && files.size( ) > 0 ) {
            for ( MultipartFile multipartFile : files ) {
                String fileName = multipartFile.getOriginalFilename( );
                fileNames.add( fileName );
            }
        }
        return "multifileSuccess";
    }
}

共有3个答案

长孙知
2023-03-14

您是否使用任何安全过滤器?我的问题通过移除安全过滤器链得到解决。由此:

this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).addFilters(this.springSecurityFilterChain).build();

到此:

this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();

我开了一期,在那里我解释了细节:https://jira.spring.io/browse/SPR-12114

闻梓
2023-03-14

@sermolaev的回答是对的。

我想分享我与这个问题相关的经验。我在Postman中遇到过这个问题,但我很长时间都无法理解它的根本原因。我的请求模板似乎是正确的,因为Postman在其中包含了边界

最终我发现,当你自己指定Content-Type=multipart/form标头时,它会覆盖Postman自动添加的标头。这会导致和你一样的错误。我的解决方案就像删除Content-Type标头一样简单。

隆谦
2023-03-14

问题不在于您的代码 - 它存在于您的请求中。您在多部分请求中缺少边界。正如它在规范中所说:

多部分实体的“内容类型”字段需要一个参数“边界”,该参数用于指定封装边界。封装边界定义为完全由两个连字符(“-”,十进制代码 45)组成的行,后跟 Content-Type 标头字段中的边界参数值。

这个和这个帖子应该也有帮助。

 类似资料:
  • 我正在用Spring rest上传文件 我正在尝试发送内容类型为multipart/form data或multipart/form data的请求 然而,我一直得到一个错误:请求被拒绝,因为没有找到多部分边界 我不确定这是rest中的问题还是我的请求被打乱了。我正在使用restclient,将内容类型设置为多部分/表单数据,并从restclient发送文件 错误: 这是我的代码 网状物xml d

  • 我正在尝试将最近使用Angular2下载的一个文件上传到Spring API Rest。 问题是(在spring应用程序上显示)。。。 请求被拒绝,因为找不到多部分边界 在org。阿帕奇。公猫util。http。文件上传。FileUploadBase$FileItemIteratorImpl。(FileUploadBase.java:831)~[tomcat-embed-core-8.5.28.j

  • 我想上传一个文件并发布到我的服务器以获得响应。 在模板中,我使用了类似的内容: 这是我的角度控制器和服务: 在服务器端,我开发了一个这样的REST服务: 以下是发送到服务器的请求,如果put * * ' Content-Type ':' undefined ' * *: 如果我说 Tring this,抛出以下异常: org . spring framework . web . multipart

  • 我正在开发一个文件上传功能。为此,我有一个spring boot web服务和客户机。 WebService:- 如果我删除文件并给出一个字符串,那么调用将继续进行。可能是什么问题。

  • 我正在用spring boot和带有postman chrome插件的Web服务尝试这一点。 在postman中,我得到了以下例外。 在控制器中,我指定了以下代码 这里我指定文件处理程序代码

  • 问题内容: 我为Spring 3 Rest Multipart文件上载了POC。它的工作正常。但是,当我尝试与我的应用程序集成时,我遇到了问题。 它引发以下异常: 如果我在代码的任何部分有误,请告诉我。 Beans: Controller: 问题答案: 问题不在你的代码中,而是在你的请求中。你的多部分请求中缺少边界。正如规范中所说: 多部分实体的Content-Type字段需要一个参数“边界”,该