为什么我的s3 createPresignedPost不遵守content-range-length条件

问题描述 投票:0回答:1

我正在尝试使用createPresignedPost将文件发布到s3。该文件正在发布到我的存储桶中,但不遵守文件大小限制。这是我的代码,文件上传是base64编码的字符串。

function postObjectSignedUrl(req) {
const key = `${req + "/" + uuid.v4()}`;
return new Promise(function (resolve, reject) {
    const params = {
        Bucket: 'base',
        Expires: 60 * 60, // in seconds,
        Fields: {
            key: key,
        },
        conditions: [
            ['content-length-range', 0,1000000]
        ]


    }
    s3.createPresignedPost(params, (err, data) => {
        if (err) {
            reject(err)
        } else {
            resolve(data);
        }
    })
})

}

我的客户端代码如下:

var data = new FormData();
const getUrl = await getSignedUrl();
const keys = getUrl["fields"];
$.each(keys, function(key,value){
    data.append(key,value);
});


data.append("file", profilePic);
try {

    const result = await fetch(getUrl["url"], {
        method: "POST",
        mode: "cors",
        headers: {
            'Access-Control-Allow-Origin': '*',
        },
        body: data
    })
    if (result.status === 204){

    }
} catch (err) {
    console.log(err, " error ")
}
amazon-web-services post amazon-s3 pre-signed-url
1个回答
0
投票

通常,NodeJS SDK中的params属性为大写字母大写,因此您必须为“条件”更改“条件”。

顺便说一下,您可以更改以下网址的生成器代码:

function postObjectSignedUrl(req) {
    const key = `${req + "/" + uuid.v4()}`;

    const params = {
        Bucket: 'base',
        Expires: 60 * 60, // in seconds,
        Fields: {
            key: key,
        },
        Conditions: [
            ['content-length-range', 0,1000000]
        ]
    }

    return s3.createPresignedPost(params).promise();
})

问候,

© www.soinside.com 2019 - 2024. All rights reserved.