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

使用Karate API实现文件上传功能时报错QUERY.BIZ.004,寻求解决方案

问题排查与修复方案

错误点1:手动设置multipart/form-data请求头

Karate在处理multipart类型请求时,会自动生成包含正确boundary参数的Content-Type请求头,手动设置该头会丢失boundary信息,导致服务器无法正确拆分解析表单字段,直接删除该行配置即可。

错误点2:多同名字段metadata传参不符合预期

从你提供的预期请求负载可以看到,接口需要接收4个独立的metadata表单字段,而非1个值为数组的metadata字段。你当前的写法会将4个对象合并为数组作为单个metadata字段的值,和接口预期不符。需要拆分4次单独声明multipart field metadata,如果服务端要求metadata字段值为JSON格式,还需要额外指定对应contentType。


修正后代码

Given url posturl
And path 'document'
And header id = '1608672'
And multipart file file = { read: 'classpath:dataDrivenPayload/karate-logo.jpg', filename: 'karate-logo.jpg', contentType: 'image/jpg' }
And multipart field metadata = { value: '{"key":"FILE_NAME","value":"karate-logo"}', contentType: 'application/json' }
And multipart field metadata = { value: '{"key":"FILE_EXTENSION","value":"jpg"}', contentType: 'application/json' }
And multipart field metadata = { value: '{"key":"TAG","value":"REQUEST"}', contentType: 'application/json' }
And multipart field metadata = { value: '{"key":"DOC_TYP","value":"00008"}', contentType: 'application/json' }
When method POST
Then status 200

若服务端支持接收text/plain类型的metadata值,也可以简化写法:

And multipart field metadata = {"key":"FILE_NAME","value":"karate-logo"}
And multipart field metadata = {"key":"FILE_EXTENSION","value":"jpg"}
And multipart field metadata = {"key":"TAG","value":"REQUEST"}
And multipart field metadata = {"key":"DOC_TYP","value":"00008"}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:57:07