Почему тип содержимого файла не применяется при загрузке в корзину S3 с использованием метода post с заранее заданными URL-адресами - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь загрузить только изображения в мое ведро s3. Я использую предварительно назначенный URL, вот мой код jquery и nodejs. Хотя. Я указываю свой тип контента как изображение, но он может принимать любой тип файла. Как я могу заставить мое ведро принимать только изображения

Jquery: 
const profilePic = $("#profile-image").attr('src')
var data = new FormData();
const getUrl = await getSignedUrl();
const keys = getUrl["fields"];
$.each(keys, function (key, value) {
    data.append(key, value);
});
data.set('Content-type', 'image/*');
data.append("file", profilePic);
try {

    const result = await fetch(getUrl["url"], {
        method: "POST",
        mode: "cors",
        headers: {
            'Access-Control-Allow-Origin': '*',
        },
        body: data
    })
    await $("#form").submit()
    console.log(await result.text(), " result ")
}  catch (err) {
    console.log(err," err ")
}

и вот мой node js код

function postObjectSignedUrl(req) {
const key = `${req + "/" + uuid.v4()}`;
return new Promise(function (resolve, reject) {
    const params = {
        Bucket: 'bucket',
        Expires: 60 * 60, // in seconds,
        // 'Content-Type': 'image/*',
        Fields: {
            key: key,
        },
        Conditions: [
            ['content-length-range', 0, 1500000],
            ["starts-with", "$Content-Type", "image/"],


        ]
    }
    s3.createPresignedPost(params, (err, data) => {
        if (err) {
            reject(err)
        } else {
            resolve(data);
        }
    })
})
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...