问题描述
我当前正在使用预签名的url将照片上传到我的存储桶,但是上传完成后,响应状态为204,并且此响应不包含密钥。使用预签名后的网址上传文件时是否可以返回密钥?
解决方法
如果createPresignedPost
创建成功,其响应为204,则它不返回键作为响应的字段。
请查看此代码,以帮助您实现目标。
服务器端:
const presignedKey = 'your/key'
var params = {
Bucket: 'bucket',Fields: {
key: presignedKey
}
};
s3.createPresignedPost(params,function(err,data) {
if (err) {
console.error('Presigning post data encountered an error',err);
} else {
data.Fields.key = presignedKey;
console.log('The post data is',data);
}
});
客户端应迭代已经包含key
字段的响应值。
const formData = new FormData()
Object.keys(presignedUrlResponse?.fields).forEach(key => {
formData.append(key,presignedUrlResponse?.fields[key])
})
formData.append('file',fs.createReadStream(file))