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

Karate API调用GraphQL POST mutation上传图片报string is not an Upload求助

问题修复方案

错误根因

你当前的写法将mutation中imageFile参数硬编码为字符串"bud.png",但GraphQL的Upload标量类型要求接收文件流而非文件名字符串,不符合GraphQL multipart请求规范,因此触发服务端报错。

修正后的测试用例

Scenario: Upload an Avatar
    Given path 'query'
    And header Accept = 'application/json'
    # 读取本地图片文件,和原逻辑一致
    And multipart file myFile = { read: 'bud.png', filename: 'bud.png', contentType: 'image/png' }
    # mutation改为使用Upload类型变量接收文件参数
    Given text query =
      """
      mutation($avatar: Upload!) {
        setUserAvatar(userID: "571d7a92", imageFile: $avatar){id}
      }
      """
    # 请求体新增variables字段,将文件变量和读取到的myFile绑定
    And request { query: '#(query)', variables: { avatar: '#(myFile)' } }
    When method POST
    Then status 200
    And print response

核心修改点

  • mutation定义新增Upload类型的入参变量,替换原硬编码的文件名字符串
  • 请求体新增variables字段,将mutation变量和你读取到的本地文件对象绑定,Karate会自动按照GraphQL上传规范完成multart参数映射
  • 不需要手动调整Content-Type等请求头,Karate会自动生成符合要求的multipart边界标识

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:09:03