如何使用Postman自动化实现S3预签名URL生成与文件上传流程
Postman 自动化执行S3预签名上传两步接口流程实现方法
步骤1:配置获取预签名URL的POST请求
- 先按接口文档要求填好POST请求的地址、鉴权信息、请求头、请求参数,确保单独发送该请求可以正常拿到包含S3 pre-signed URL的响应。
- 打开该请求的
Tests标签页,写入脚本将接口返回的预签名URL自动存入Postman环境变量,供后续PUT请求调用:
// 解析POST接口返回的JSON响应,可根据你自己接口的实际返回结构调整取值路径 const responseData = pm.response.json(); // 示例:如果返回结构为 { code:0, data: { uploadUrl: "预签名地址" } },就按如下方式取值 const presignedUrl = responseData.data.uploadUrl; // 将取到的预签名URL存入环境变量,变量名可自定义 pm.environment.set("s3_upload_url", presignedUrl); // 如果接口同时返回了上传时要求携带的固定Content-Type、自定义x-amz头,也可以一并存入变量 // pm.environment.set("s3_upload_content_type", responseData.data.fileContentType);
步骤2:配置上传文件的PUT请求
- 新建PUT请求,请求地址栏直接填写变量引用
{{s3_upload_url}},不需要写死固定地址。 - 切换到
Headers标签页:如果第一步接口返回了上传必须携带的指定请求头(比如固定Content-Type),对应填入即可,值可以引用之前存的变量;不要额外添加多余的请求头(比如自定义Authorization、Cookie等),否则会触发S3签名校验失败。 - 切换到
Body标签页,选择binary类型,点击「选择文件」选中你要上传的目标文档即可,不要随意切换成form-data等其他格式,除非生成预签名URL时指定的是表单上传模式。
步骤3:串联流程实现自动执行
- 在Postman侧边栏新建一个集合(Collection),把刚才配置好的POST请求、PUT请求按执行先后顺序拖入集合中,必须保证POST请求在前、PUT请求在后。
- 点击集合右侧的更多操作按钮,选择
Run collection,在弹出的集合运行面板中确认请求顺序无误后,点击运行即可自动完成「获取预签名URL-上传文件」的全流程,不需要手动复制粘贴URL。
常见问题提示
- 如果PUT请求返回403 SignatureDoesNotMatch错误,优先检查是否携带了签名范围外的多余请求头、是否额外加了未被签名包含的查询参数、上传的Content-Type和生成签名时指定的类型是否一致。
- 预签名URL默认有有效期,要保证两步执行的间隔在URL有效期范围内。
内容的提问来源于stack exchange,提问作者Himani
相关产品推荐
相关产品推荐

