Amazon web services 使用PUT预签名URL将二进制数据从react native上载到AWS S3
我想上传一个文件到AWS S3 我尝试使用表单数据发送文件,但收到以下状态为403的响应: 我们计算的请求签名与您的签名不匹配 假如检查您的密钥和签名方法 经过进一步调查,我发现了这一点,并建议改用二进制Amazon web services 使用PUT预签名URL将二进制数据从react native上载到AWS S3,amazon-web-services,react-native,amazon-s3,fetch,Amazon Web Services,React Native,Amazon S3,Fetch,我想上传一个文件到AWS S3 我尝试使用表单数据发送文件,但收到以下状态为403的响应: 我们计算的请求签名与您的签名不匹配 假如检查您的密钥和签名方法 经过进一步调查,我发现了这一点,并建议改用二进制 在react native中应该如何执行此操作?事实证明,您可以通过多种方式发送文件,包括base64和作为缓冲区 使用和: base64上传正常,但我无法查看图像。因此,我使用缓冲区上传: export const uploadToAws = async (signedRequest, fi
在react native中应该如何执行此操作?事实证明,您可以通过多种方式发送文件,包括
base64
和作为缓冲区
使用和:
base64上传正常,但我无法查看图像。因此,我使用缓冲区上传:
export const uploadToAws = async (signedRequest, file) => {
const base64 = await fs.readFile(file.uri, 'base64')
const buffer = Buffer.from(base64, 'base64')
return fetch(signedRequest, {
method: 'PUT',
headers: {
'Content-Type': 'image/jpeg; charset=utf-8',
'x-amz-acl': 'public-read',
},
body: buffer,
})
}
请注意,在服务器上,您需要确保设置了正确的内容类型:
{ContentType:“image/jpeg;charset=utf-8”,“x-amz-acl:“public read”}
,因为fetch似乎将字符集添加到了内容类型。事实证明,您可以通过多种方式发送文件,包括base64
和作为缓冲区
使用和:
base64上传正常,但我无法查看图像。因此,我使用缓冲区上传:
export const uploadToAws = async (signedRequest, file) => {
const base64 = await fs.readFile(file.uri, 'base64')
const buffer = Buffer.from(base64, 'base64')
return fetch(signedRequest, {
method: 'PUT',
headers: {
'Content-Type': 'image/jpeg; charset=utf-8',
'x-amz-acl': 'public-read',
},
body: buffer,
})
}
请注意,在服务器上,您需要确保设置了正确的内容类型:{ContentType:“image/jpeg;charset=utf-8”,'x-amz-acl':'public read'}
,因为fetch似乎将字符集添加到了内容类型中