栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

带有JSON的Spring MVC多部分请求

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

带有JSON的Spring MVC多部分请求

这就是我使用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"})@ResponseBodypublic boolean executeSampleService(        @RequestPart("properties") @Valid ConnectionProperties properties,        @RequestPart("file") @Valid @NotNull @NotBlank MultipartFile file) {    return projectService.executeSampleService(properties, file);}

前端(Javascript)代码段:

  1. 创建一个FormData对象。

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

  3. 如果文件已使用“文件”类型的输入元素上载,则将其附加到FormData对象。

    formData.append("file", document.forms[formName].file.files[0]);

  4. 将文件直接附加到FormData对象。
    formData.append("file", myFile, "myfile.txt")
    ;要么
    formData.append("file", myBob, "myfile.txt")
    ;
  5. 创建带有字符串化JSON数据的Blob,并将其附加到

    FormData
    对象。这将导致
    multipart
    请求中第二部分的
    Content-type
    “ application / json”
    ,而不是文件类型。

  6. 将请求发送到服务器。

  7. 要求详细信息:

    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------WebKitFormBoundaryvijcWI2ZrZQ8xEBNContent-Disposition: form-data; name="file"; filename="myfile.txt"Content-Type: application/txt------WebKitFormBoundaryvijcWI2ZrZQ8xEBNContent-Disposition: form-data; name="properties"; filename="blob"Content-Type: application/json------WebKitFormBoundaryvijcWI2ZrZQ8xEBN--


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/377788.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号