首页 > 解决方案 > s3 presigned url multipart formdata上传错误:签名不匹配

问题描述

我从 aws 获得一个预签名的 url,并使用它来请求(PUT)一个 zip 文件。我得到签名不匹配。

获得预签名网址时:

const params = {
            Bucket: myBucket,
            Key: myKey,
            Expires: 60*60,
            ACL: '**-**-**',
            ContentType: 'application/x-zip-compressed'}; 

请求时:

const formData = new FormData();
        formData.append('file', file);
        formData.append('filename', file.name);

fetch(url, {
                method: 'PUT',
                headers: {
                    'Content-Type': 'application/x-zip-compressed',
                },
                body: formData
        })

标签: amazon-web-servicesamazon-s3multipartform-datapre-signed-url

解决方案


无论ACL您在签名中使用什么值,都需要在请求标头中发送,如'x-amz-acl': '**-**-**'.

另请注意,S3PUT不期望FormData- 它期望body包含对象的原始字节。这不是错误的原因,但是一旦您更正了签名错误,您也需要更改它,以便获得有效、可用的上传。


推荐阅读