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

使用Tavern通过AWS预签名URL上传S3文件失败求助

解决Tavern测试S3预签名URL上传时的表单字段识别问题

你遇到的问题根源很明确:Tavern里的files字段是专门用来指定要上传的文件的,而你把key、x-amz-algorithm这些普通的multipart表单字段也放到了files下面,Tavern会默认把它们当作文件路径去查找,自然就会报“文件找不到”的错误。

正确的测试用例写法

你需要把普通的表单字段(比如key、所有x-amz-*字段、policy)放到data字段下,只把真正要上传的file字段留在files里,这样Tavern就会正确区分普通表单数据和文件上传部分,和你原本的cURL请求完全对应:

stages:
  - name: UPLOAD A FILE TO S3
    request:
      method: POST
      url: "https://<bucket>.s3.amazonaws.com/"
      data:
        key: target.zip
        x-amz-algorithm: ***
        x-amz-credential: ***
        x-amz-date: ***
        x-amz-security-token: ***
        policy: ***
        x-amz-signature: ***
      files:
        file: '@target.zip'
    response:
      status_code: 200

为什么这样写是对的?

回顾你用的cURL命令:

  • -F key=<filename>.zip 这类不带@的参数,本质是在multipart/form-data里添加普通表单键值对,对应Tavern的data字段;
  • -F file=@<filename>.zip 带@的参数才是指定要上传的文件,对应Tavern的files字段。

这样拆分后,Tavern会自动构造正确的multipart/form-data请求,既包含所有必要的签名验证字段,也会正确读取并上传你的zip文件。

这个场景完全可以在Tavern中实现,只是你之前混淆了data和files字段的用途~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:09:52