Amazon web services 使用PUT预签名URL将二进制数据从react native上载到AWS S3

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

我想上传一个文件到AWS S3

我尝试使用表单数据发送文件,但收到以下状态为403的响应:

我们计算的请求签名与您的签名不匹配 假如检查您的密钥和签名方法

经过进一步调查,我发现了这一点,并建议改用二进制


在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似乎将字符集添加到了内容类型中