我想使用Spring MVC发布带有一些JSON数据的文件。因此,我开发了一项休息服务
@RequestMapping(value = "/servicegenerator/wsdl", method = RequestMethod.POST,consumes = { "multipart/mixed", "multipart/form-data" })
@ResponseBody
public String generateWSDLService(@RequestPart("meta-data") WSDLInfo wsdlInfo,@RequestPart("file") MultipartFile file) throws WSDLException, IOException,
JAXBException, ParserConfigurationException, SAXException, TransformerException {
return handleWSDL(wsdlInfo,file);
}
当我从其他客户端发送请求时 content-Type = multipart/form-data or multipart/mixed
,出现下一个异常: org.springframework.web.multipart.support.MissingServletRequestPartException
谁能帮助我解决这个问题?
我可以@RequestPart
同时将Multipart和JSON发送到服务器吗?
这就是我使用JSON数据实现Spring MVC Multipart Request的方式。
带有JSON数据的分段请求(也称为混合分段):
基于Spring 4.0.2版本中的RESTful服务,可以使用@RequestPart来实现HTTP请求,其中第一部分为XML或JSON格式的数据,第二部分为文件。以下是示例实现。
Java代码段:
Controller中的Rest服务将混合使用@RequestPart和MultipartFile来满足此类Multipart + JSON请求。
@RequestMapping(value = "/executesampleservice", method = RequestMethod.POST,
consumes = {"multipart/form-data"})
@ResponseBody
public boolean executeSampleService(
@RequestPart("properties") @Valid ConnectionProperties properties,
@RequestPart("file") @Valid @NotNull @NotBlank MultipartFile file) {
return projectService.executeSampleService(properties, file);
}
前端(JavaScript)代码段:
创建一个FormData对象。
使用以下步骤之一将文件追加到FormData对象。
如果文件已使用“文件”类型的输入元素上载,则将其附加到FormData对象。 formData.append("file", document.forms[formName].file.files[0]);
formData.append("file", myFile, "myfile.txt")
;要么formData.append("file", myBob, "myfile.txt")
;创建带有字符串化JSON数据的Blob,并将其附加到FormData
对象。这将导致multipart
请求中第二部分的Content-type
是“ application / json”
,而不是文件类型。
将请求发送到服务器。
要求详细信息:
Content-Type: undefined
。这将导致浏览器将Content-Type
设置为multipart / form-data
并正确填充边界。手动将Content-Type
设置为multipart / form-data
将无法填写请求的边界参数。
JavaScript代码:
formData = new FormData();
formData.append("file", document.forms[formName].file.files[0]);
formData.append('properties', new Blob([JSON.stringify({
"name": "root",
"password": "root"
})], {
type: "application/json"
}));
要求详细信息:
method: "POST",
headers: {
"Content-Type": undefined
},
data: formData
请求有效负载:
Accept:application/json, text/plain, */*
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryEBoJzS3HQ4PgE1QB
------WebKitFormBoundaryvijcWI2ZrZQ8xEBN
Content-Disposition: form-data; name="file"; filename="myfile.txt"
Content-Type: application/txt
------WebKitFormBoundaryvijcWI2ZrZQ8xEBN
Content-Disposition: form-data; name="properties"; filename="blob"
Content-Type: application/json
------WebKitFormBoundaryvijcWI2ZrZQ8xEBN--
我试图编写完整的多部分流,从客户端使用Spring restTemplate发送多部分请求,从服务器端自动将不同部分解析为对象(我使用JAXB进行对象封送),并以多部分形式返回响应。 我能够实现几乎所有的流,但是我不能从spring Controller中用jaxb对象发送多部分响应。 试图使he FormHttpMessageConverter正确地编写部分,但这没有帮助 是否有任何方法使Spr
我想用Spring MVC发布一个包含一些JSON数据的文件。所以我开发了一个rest服务作为
我正在尝试通过使用多部分数据主体的JMeter构建HTTP请求。 我有一个HTTP头管理器,其内容类型设置为多部分/表单数据;边界=AaB03x。我选择了“将多部分/表单数据用于POST”。 然后我创建了一个数据主体, 当我运行这个程序时,我发现请求没有正确地发送正文,而是发送了一些随机数据, 发布数据: 并给出错误响应, 我的第二个问题是:请求的第3部分发送一个要上载的文件。我可以通过某种方式传
我正在尝试将数据从应用程序上传到Spring后端服务。要上传的内容是一个DataModel,其中包含要创建的对象的数据和链接到数据的几个图像。因此,我使用此方法签名: 我尝试使用注释,但要么得到一个空白的图像数组,要么助手为空。你将如何解决这个问题? 提前谢谢。
问题内容: 我有一个API端点,必须向其发送多部分HTTP请求,该请求由两部分组成(文件系统文件)和(JSON对象)。 经过一些研究,我发现了如何在AngularJS中执行多部分请求: 1) 该函数最初具有以下形式: 此实现的结果是,请求的各个部分没有设置。 Blob ,对象看起来像这样(有点混乱,基本上第一部分是of ,第二个): 第二种方法为请求的每个部分设置了正确的内容,但没有为部分设置任何
问题内容: 我有以下POST请求表格(简化): 我尝试发送POST请求: 但它返回状态并带有以下注释: 请指出我的错误。我应该进行哪些更改才能使其正常工作? 问题答案: 您自己设置标题,包括边界。不要这样 会为您生成一个边界并将其设置在标头中,但是如果您 已经 设置了标头,那么生成的有效负载和标头将不匹配。只需将标题全部放下即可: 请注意,我还给了零件一个文件名(路径的基本名称)。 有关多部分PO