Javascript 从Angular将imagem Base64上载到S3
我尝试使用angular将imagem base64发送到s3,react与后端的端点一起工作,但angular中出现错误:Javascript 从Angular将imagem Base64上载到S3,javascript,node.js,angular,typescript,amazon-s3,Javascript,Node.js,Angular,Typescript,Amazon S3,我尝试使用angular将imagem base64发送到s3,react与后端的端点一起工作,但angular中出现错误: <Code>SignatureDoesNotMatch</Code> <Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message
<Code>SignatureDoesNotMatch</Code>
<Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message>
后端很简单:
s3.getSignedUrl(
'putObject',
{
Bucket: process.env.AWS_BUCKET,
ContentType: 'image/jpeg',
ContentEncoding: 'base64',
Key: key
},
(e, url) => res.send({ key, url })
);
在angular上,我有两个服务:
uploadImage(): Promise<any> {
return this.http.get(`${api}/upload`).toPromise();
}
saveImage(url: string, image): Observable<any> {
return this.http.put(url, image, {
headers: { 'Content-Type': 'image/jpeg', 'Content-Encoding': 'base64' },
});}
我试图传递的imagem是由
问候 您使用的签名版本是什么??我看到您没有在这里定义它……签名是在由服务“uploadImage”生成的url中返回的,我将Put作为url返回的示例:尝试在s3对象配置中添加此
signatureVersion:'v4'
配置{Bucket:process.env.AWS_Bucket,ContentType:'image/jpeg',ContentEncoding:'base64',Key:Key,signatureVersion:'v4',在这里?
this.service.uploadImage().then(({ url }) => {
this.service
.saveImage(url, this.webcamImage.imageAsBase64)
.subscribe(res => {
console.log(res);
});
});