我想将文件上传到AWS S3 using a pre-signed url。
我尝试使用表单数据发送文件,但是我得到了状态403的以下响应:
我们计算的请求签名与您的签名不符 提供。检查您的密钥和签名方法。
经过进一步调查后,我发现AWS S3 does not support form-data并建议使用二进制代码。
我应该如何在本地做反应?
答案 0 :(得分:0)
事实证明,您可以通过多种方式发送文件,包括insertPetsForUser(User, List<Pet>)
和base64
。
作为base64上传工作,但我无法查看图像。所以我上传了一个缓冲区:
Buffer
请注意,在服务器上,您需要确保设置正确的Content-Type: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,
})
}
,因为看起来fetch会将charset添加到Content-Type。