Node.js 上载时aws预签名url请求签名不匹配
我正在尝试使用预先签名的url上载图像Node.js 上载时aws预签名url请求签名不匹配,node.js,amazon-s3,pre-signed-url,Node.js,Amazon S3,Pre Signed Url,我正在尝试使用预先签名的url上载图像 const s3Params = { Bucket: config.MAIN_BUCKET, Key: S3_BUCKET + '/'+fileName, ContentType: fileType, Expires: 900, ACL: 'public-read' }; const s3 = new AWS.S3({ accessKeyId: config.accessKeyId, secretAccessKey: confi
const s3Params = {
Bucket: config.MAIN_BUCKET,
Key: S3_BUCKET + '/'+fileName,
ContentType: fileType,
Expires: 900,
ACL: 'public-read'
};
const s3 = new AWS.S3({
accessKeyId: config.accessKeyId,
secretAccessKey: config.secretAccessKey,
'region': config.region
});
const url = await s3.getSignedUrlPromise('putObject', s3Params)
return url
我得到了一个类似的url
邮递员似乎正在以多部分/表单数据的形式发送内容类型;边界=------------------------------------336459561795502380899802。这里添加了额外的边界。如何解决这个问题?我正在测试postman上的表单数据。但是getsignedUrl()函数不支持这一点。尝试使用二进制,效果很好。对于multipart,aws sdk中似乎有一个不同的函数,根据aws S3文档,S3默认使用SignatureVersion4 但是nodejs AWS-SDK默认使用SignatureVersion2 因此,您必须在请求头中显式指定SignatureVersion4 在S3配置中添加此代码
s3=新的AWS.s3({
“签名转换”:“v4”
});
请在生成url时发布上载imagetryContentType:“应用程序/八位字节流”
的客户端代码,并在上载时传递相同的内容类型。