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

使用JSON的Spring MVC多部分请求

端木鹏
2023-03-14

我想用Spring MVC发布一个包含一些JSON数据的文件。所以我开发了一个rest服务作为

@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);
}

共有1个答案

白子默
2023-03-14

这就是我使用JSON数据实现Spring MVC多部分请求的方式。

基于Spring4.0.2版本中的RESTful服务,可以通过@RequestPart实现第一部分为XML或JSON格式数据、第二部分为文件的HTTP请求。下面是示例实现。

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);
}

>

  • 创建FormData对象。

    使用以下步骤之一将文件追加到FormData对象。

    1. 如果文件是使用“file”类型的输入元素上载的,则将其追加到FormData对象。formdata.append(“file”,document.forms[formName].file.files[0]);
    2. 直接将文件追加到FormData对象。formdata.append(“file”,myFile,“myFile.txt”);formdata.append(“file”,myBob,“myFile.txt”);

    将请求发送到服务器。

    请求详细信息:
    内容类型:未定义。这导致浏览器将Content-Type设置为Multipart/Form-Data并正确填充边界。手动将Content-Type设置为multipart/form-data将无法填写请求的边界参数。

    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--
    

  •  类似资料:
    • 我正在传递多部分文件与其他用户信息。无法将类型的属性值转换为属性嵌套异常为 下面的代码我已经试过了 控制器类 @RequestMapping(value=RestMappingURLS.user.saveUser,headers={“Content-Type=Multipart/Mixed”,“Content-Type=Multipart/Form-Data”})public RestRespon

    • 我试图编写完整的多部分流,从客户端使用Spring restTemplate发送多部分请求,从服务器端自动将不同部分解析为对象(我使用JAXB进行对象封送),并以多部分形式返回响应。 我能够实现几乎所有的流,但是我不能从spring Controller中用jaxb对象发送多部分响应。 试图使he FormHttpMessageConverter正确地编写部分,但这没有帮助 是否有任何方法使Spr

    • 问题内容: 我想使用Spring MVC发布带有一些JSON数据的文件。因此,我开发了一项休息服务 当我从其他客户端发送请求时 ,出现下一个异常: 谁能帮助我解决这个问题? 我可以同时将Multipart和JSON发送到服务器吗? 问题答案: 这就是我使用JSON数据实现Spring MVC Multipart Request的方式。 带有JSON数据的分段请求(也称为混合分段): 基于Sprin

    • 我正在使用Multipart执行帖子类型请求。问题是因为我一直收到两个错误 1) 500 2) 422不可处理实体 Api仅接受音乐文件。因此,我添加了一个默认文件,以避免不断选择新文件 和我的界面 如果有任何帮助,我将不胜感激。 我发现它将文件作为对象通过Reform2发送到服务器

    • 我正在尝试通过使用多部分数据主体的JMeter构建HTTP请求。 我有一个HTTP头管理器,其内容类型设置为多部分/表单数据;边界=AaB03x。我选择了“将多部分/表单数据用于POST”。 然后我创建了一个数据主体, 当我运行这个程序时,我发现请求没有正确地发送正文,而是发送了一些随机数据, 发布数据: 并给出错误响应, 我的第二个问题是:请求的第3部分发送一个要上载的文件。我可以通过某种方式传

    • 问题内容: 我有一个API端点,必须向其发送多部分HTTP请求,该请求由两部分组成(文件系统文件)和(JSON对象)。 经过一些研究,我发现了如何在AngularJS中执行多部分请求: 1) 该函数最初具有以下形式: 此实现的结果是,请求的各个部分没有设置。 Blob ,对象看起来像这样(有点混乱,基本上第一部分是of ,第二个): 第二种方法为请求的每个部分设置了正确的内容,但没有为部分设置任何