缺少签名,来自aws-sdk的createPresignedPost上传器,具有以下代码。未根据react-dropzone-uploader获取上传文件到s3的相关结果。从亚马逊s3上传面临403错误的文件时
const params = {
Bucket: myBucket,
Key: myKey,
Fields: {
Key: myKey,
AWSAccessKeyId: process.env.AWS_ACCESS_KEY_ID,
acl: "public-read",
},
Expires: signedUrlExpireSeconds,
Conditions: [
['content-length-range', 0, 100000000], // 100 Mb
{'acl': 'public-read'}
]
};
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);
data.fileUrl = data.url+"/"+data.fields.key;
data.uploadUrl = data.url+"/";
res.status(200).send(
new apiResponse.responseObject(200, data, null).getResObject()
);
}
});https://react-dropzone-uploader.js.org/docs/s3#s3-using-put-instead-of-post
发布于 2019-12-16 03:59:33
在生成预签名的URL时,您不需要在参数中传递AWSAccessKeyId。此外,“acl”应位于Fields属性之外。
return new Promise((resolve, reject) => {
const params = {
Bucket: myBucket,
Fields: {
key: myKey
},
Expires: signedUrlExpireSeconds,
Conditions: [
['content-length-range', 0, 10000000], // 10 Mb
{'acl': 'public-read'}
]
};
s3.createPresignedPost(params, (err, data) => {
resolve(data);
});
});https://stackoverflow.com/questions/59346640
复制相似问题