在 javascript SDK 中使用此版本的 createPresignedPost 属性(我知道这是一个较旧的 SDK...由于节点版本,我被迫使用它)我正在为文件上传生成 POST 标头。
当我在 Postman 中设置这些标头时,出现以下错误:
Bucket POST 必须包含名为“key”的字段。
当我指定“密钥”时,我收到一个新错误
知道这是什么意思以及如何让 AWS 发挥良好作用以便我最终可以上传文件吗?
事实证明我最初没有正确传递我的密钥。
最初我是这样传递的:
const params = {
Bucket: BUCKET, // replace with your bucket name
Expires: 3600, // URL validity (1 hour in this case)
Key: uploadFileKey
};
s3.createPresignedPost(params, (err, data) => {
if (err) {
} else {
console.log('data', data);
}
});
没有将密钥返回到字段中:
{
url: 'https://s3.amazonaws.com/ss-usa',
fields: {
bucket: 'my-bucket',
'X-Amz-Algorithm': 'AWS4-HMAC-SHA256',
'X-Amz-Credential': 'SOMECREDENTIAL/20231020/us-east-1/s3/aws4_request',
'X-Amz-Date': '20231020T143349Z',
Policy: 'SOMEPOLICY=',
'X-Amz-Signature': 'SOMESIGNATURE'
}
}
我需要执行以下操作:
const params = {
Bucket: BUCKET, // replace with your bucket name
Expires: 3600, // URL validity (1 hour in this case)
Fields: {
key: targetFilePath,
},
};
s3.createPresignedPost(params, (err, data) => {
if (err) {
} else {
console.log('data', data);
}
});
它确实将密钥返回到字段中,从而允许我在 Postman 中添加密钥字段并成功发布我的文件
{
url: 'https://s3.amazonaws.com/ss-usa',
fields: {
key: 'my-key'
bucket: 'my-bucket',
'X-Amz-Algorithm': 'AWS4-HMAC-SHA256',
'X-Amz-Credential': 'SOMECREDENTIAL/20231020/us-east-1/s3/aws4_request',
'X-Amz-Date': '20231020T143349Z',
Policy: 'SOMEPOLICY=',
'X-Amz-Signature': 'SOMESIGNATURE'
}
}