【问题标题】:How can I use multipart/form-data?如何使用多部分/表单数据?
【发布时间】:2020-01-07 09:21:04
【问题描述】:

我需要实现一个 REST-Endpoint,它接收 multipart/form-data
我用
- 春季启动
- 科特林
- Spring MVC

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

部署名称 ----- text/plain
启用重复过滤 ----- 文本/纯文本
仅部署更改 ----- 文本/纯文本
部署源 ----- 文本/纯文本
租户 ID ----- 文本/纯文本
* ----- 应用程序/八位字节流

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

有人可以帮忙吗?

【问题讨论】:

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


    【解决方案1】:

    Retrofit 在FORM ENCODED AND MULTIPART 上有文档

    要点是用@Multipart注释函数并将你的文件注释为@Part

    【讨论】:

    • 如果我使用@RequestParam("deployment-name") deploymentName: String,则无需改造即可使用,但对于 application/octet-stream 类型的最后一个参数不起作用。还有@Multipart@Part。 "指定为非空的参数为空"
    猜你喜欢
    • 2015-06-23
    • 2017-02-04
    • 2016-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 2015-10-31
    • 1970-01-01
    相关资源
    最近更新 更多