如何使用multipart / form-data?

时间:2019-09-04 13:07:49

标签: java spring-boot spring-mvc kotlin multipartform-data

我需要实现一个REST端点,该端点可以接收multipart / form-data
我用
-春季靴
-科特林
-Spring MVC

包含以下部分的多部分表单提交:

部署名称-----文本/纯文本
启用重复过滤-----文本/纯文本
仅部署更改的-----文本/纯文本
部署源-----文本/纯文本
租户ID -----文本/纯文本
* ----- application / octet-stream

Rest Controller的外观如下:

    @PostMapping("/data/deployment/create")
    fun uploadDmn(@RequestBody() file: Any){

    }

收到请求后,出现错误:

  

内容类型'multipart / form-data; boundary = -------------------------- 914124725006223485188585; charset = UTF-8'不支持]

如果我使用“ MultipartFile”而不是任何文件,则文件为NULL。

    @PostMapping("/data/deployment/create")
    fun uploadDmn(@RequestBody() file: MultipartFile){

    }

请求示例:

--28319d96a8c54b529aa9159ad75edef9
Content-Disposition: form-data; name="deployment-name"

aName
--28319d96a8c54b529aa9159ad75edef9
Content-Disposition: form-data; name="enable-duplicate-filtering"

true
--28319d96a8c54b529aa9159ad75edef9
Content-Disposition: form-data; name="deployment-source"

process application
--28319d96a8c54b529aa9159ad75edef9
Content-Disposition: form-data; name="data"; filename="test.bpmn"

<?xml version="1.0" encoding="UTF-8"?>
<bpmn2:definitions ...>
  <!-- BPMN 2.0 XML omitted -->
</bpmn2:definitions>
--28319d96a8c54b529aa9159ad75edef9--

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

改装在FORM ENCODED AND MULTIPART上有文档

要点是用@Multipart注释功能并将文件注释为@Part

答案 1 :(得分:0)

您可以使用可以尝试的以下方法,

  1. 在“ @RequestMapping”中设置消耗块。

    like,@RequestMapping(value =“ / abc”,消耗=“ multipart / form-data”,method = HTTPMethod.POST“)

  2. 使用@Multipart批注和文件对象作为@Part批注

  3. 使用@RequestPart代替@RequestBody。