You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Karate 1.3.0多文件上传用已弃用multipart/mixed,如何改为form-data?

Karate 1.3.0 多文件上传:替换multipart/mixed为独立form-data项

可以覆盖默认行为,生成符合RFC7578规范的多文件上传请求(每个文件对应独立的form-data项),有两种简洁的实现方式:

方式1:数组形式定义多文件

直接将多个文件配置放在数组中,Karate会自动生成独立的form-data部分:

Given path 'files', 'multiple'
And multipart file files = [{ read: 'test.pdf', filename: 'upload-name1.pdf', contentType: 'application/pdf' }, { read: 'test.pdf', filename: 'upload-name2.pdf', contentType: 'application/pdf' }]
When method post
Then status 202

方式2:带索引的参数名

保持多行声明的习惯,使用files[]作为参数名,明确指示为数组类型:

Given path 'files', 'multiple'
And multipart file files[] = { read: 'test.pdf', filename: 'upload-name1.pdf', contentType: 'application/pdf' }
And multipart file files[] = { read: 'test.pdf', filename: 'upload-name2.pdf', contentType: 'application/pdf' }
When method post
Then status 202

效果说明

修改后的请求会生成服务器兼容的格式,每个文件对应独立的form-data块,示例如下:

Content-Type: multipart/form-data; boundary=xxxxxx

--xxxxxx
content-disposition: form-data; name="files"; filename="upload-name1.pdf"
content-type: application/pdf
content-transfer-encoding: binary
...
--xxxxxx
content-disposition: form-data; name="files"; filename="upload-name2.pdf"
content-type: application/pdf
content-transfer-encoding: binary
...
--xxxxxx--

问题原因

Karate 1.3.0对重复同名的multipart参数处理逻辑做了调整,默认将多文件打包为multipart/mixed嵌套结构(该类型已被RFC7578弃用),而早期版本的Karate会直接生成多个独立的form-data项,因此不会出现兼容性问题。

内容的提问来源于stack exchange,提问作者Rob Martin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 04:50:24