Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法在Spring 5.0.1中处理多部分/报表数据。它只检测请求中的多部分/表单数据_Java_Spring_Spring Mvc_Servlets_Multipartform Data - Fatal编程技术网

Java 无法在Spring 5.0.1中处理多部分/报表数据。它只检测请求中的多部分/表单数据

Java 无法在Spring 5.0.1中处理多部分/报表数据。它只检测请求中的多部分/表单数据,java,spring,spring-mvc,servlets,multipartform-data,Java,Spring,Spring Mvc,Servlets,Multipartform Data,我使用的是Spring5.0.1和Servlet3.1.0 当用户在请求中发送多部分/表单数据时,spring能够解析请求并从中生成部分。 request.getParts()将提供那些多部分 但当用户发送多部分/报告(内容类型)时,spring无法正确解析此请求。 它不会给出任何异常,但不会在请求部分存储任何内容。 getParts()将返回空数组 是否需要进行任何配置,以便spring解析任何类型的多部分数据 在下面发布我的代码和请求有效负载: RESTAPI对内容类型没有任何限制。它仅将请

我使用的是Spring5.0.1和Servlet3.1.0

当用户在请求中发送多部分/表单数据时,spring能够解析请求并从中生成部分。
request.getParts()将提供那些多部分

但当用户发送多部分/报告(内容类型)时,spring无法正确解析此请求。
它不会给出任何异常,但不会在请求部分存储任何内容。
getParts()将返回空数组

是否需要进行任何配置,以便spring解析任何类型的多部分数据

在下面发布我的代码和请求有效负载:

RESTAPI对内容类型没有任何限制。它仅将请求和响应作为参数,如下所示:

@RequestMapping (value = "/rest/external/integration/{serviceName}", method = RequestMethod.POST)   
public void executeAssemblyExternal (HttpServletRequest request, 
            HttpServletResponse response, @PathVariable String serviceName)  throws Exception    
{        
      Parts[] requestParts = request.getParts();   
}
与请求一起发送的内容类型标头为:
内容类型多部分/报告;报告类型=处置通知;boundary=“---=_Part_82_645653877.1526452736757”

发送到REST API的多部分数据如下所示:

------=_部分_82_645653877.1526452736757 内容类型:文本/纯文本;字符集=美国ascii码 内容传输编码:7bit

用于- 消息ID: 发件人:Sendera2 收件人:接收人2 收到日期:2018-05-16 12:08:56(IST) 状态:已处理 备注:这并不能保证信息已被接收翻译人员完全处理或理解

------=_部分_82_645653877.1526452736757 内容类型:消息/处置通知 内容传输编码:7bit

报告UA:webMethods集成服务器 原收件人:rfc822;接管人2 最终收件人:rfc822;接管人2 原始邮件ID: 接收内容麦克风:SezQZhP0aSchqB1zCO0Dq4J0u3U=,sha1 处置:自动动作/MDN自动发送;加工


------=_Part_82_645653877.1526452736757--

正如Deinum在评论中提到的,servlet不能处理多部分/表单数据以外的多部分请求。 因此编写了一个自定义dispatcherServlet,其中头内容类型为multipart且子类型不是表单数据的请求将被绕过,无法通过MultipartResolver进行处理


通过执行此请求,getInputStream()将拥有用户发送的整个多部分数据。可以在服务器端对此输入流执行必要的操作。

发布您的代码,以便我们看到没有任何配置会有帮助。ServletAPI默认上载处理(以及
commons fileupload
将只解析基于
多部分/表单数据的请求。感谢您的回复。在问题中发布了我的代码。@M.Denium:是否有任何方法可以提供servlet的其他上载处理程序,以便它处理所有多部分类型。?您不需要自定义
DispatcherServlet
@Controller
注释的方法中解析请求。如果您根本不需要文件上载,可以禁用文件上载。