
这就是我使用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)代码段:
创建一个FormData对象。
使用以下步骤之一将文件追加到FormData对象。
如果文件已使用“文件”类型的输入元素上载,则将其附加到FormData对象。
formData.append("file", document.forms[formName].file.files[0]);- 将文件直接附加到FormData对象。
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------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--
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)