aws presigned post 400 错误请求

aws presigned post 400 bad request

我正在尝试通过 Postman 将文件上传到我的存储桶。 我使用 post 请求,所以在我的 nodejs 后端上,我正在生成一个预签名的 post url,通过在 aws sdk

上使用这个函数
Url() {
    const suffix = `${(0, uuid_1.v4)()}`;
    const extension = path_1.default.basename(this.fileName);
    const params = {
        Bucket: constants_1.BUCKET,
        Fields: {
            Key: `${this.pathToSave}/${suffix}${extension}`,
            "Content-Type": "image/jpeg"
        },
        Conditions: [
            ["content-length-range", 0.1, 200000000],
            ["eq", "$x-amz-meta-postid", this.postId],
            ["eq", "$Content-Type", "image/jpeg"]
        ],
        Expires: 180
    };
    return new Promise((resolve, reject) => {
        S3.createPresignedPost(params, function (err, data) {
            if (err) {
                reject(err);
                return;
            }
            resolve(data);
        });
    });
}

这就是我通过 postman

发出请求的方式

问题是当我发送请求时出现 400 Bad Request 错误。我已经阅读了所有 aws 文档并在线搜索,但我不明白如何解决这个问题。

在你的条件变化中:

["content-length-range", 0.1, 200000000] 到 ["content-length-range", 1, 200000000]


我的有效代码:

const params = {
    Bucket: "{bucket_name}",
    Fields: {
        Key: `test.jpg`,
        "Content-Type": "image/jpeg"
    },
     Conditions: [
        ["content-length-range", 1, 2000000000],
        ["eq", "$x-amz-meta-postid", "some-post-id"],
        ["eq", "$Content-Type", "image/jpeg"]
   ],
    Expires: 380
};

s3.createPresignedPost(params, function(err, data) {
  if (err) {
    console.error('Presigning post data encountered an error', err);
  } else {
    console.log('The post data is', data);
  }
});

请求邮递员: