Javascript AWS S3图像上载错误:不支持的车身有效负载对象

Javascript AWS S3图像上载错误:不支持的车身有效负载对象,javascript,node.js,reactjs,amazon-web-services,amazon-s3,Javascript,Node.js,Reactjs,Amazon Web Services,Amazon S3,我尝试将本地图像上传到s3存储桶中,并不断获取 错误:不支持的车身有效载荷对象 图像可以是jpg、jpeg或png。我已经了解到图像只能作为base64上传到s3,因此我使用readAsDataURL将文件作为base64字符串读取,然后用它创建一个缓冲区 const reader = new FileReader() reader.readAsDataURL(file) const base64str = reader.result.replace(/^data:image\/\w+;base

我尝试将本地图像上传到s3存储桶中,并不断获取
错误:不支持的车身有效载荷对象

图像可以是
jpg
jpeg
png
。我已经了解到图像只能作为
base64
上传到s3,因此我使用
readAsDataURL
将文件作为base64字符串读取,然后用它创建一个缓冲区

const reader = new FileReader()
reader.readAsDataURL(file)
const base64str = reader.result.replace(/^data:image\/\w+;base64,/, "");
const fileContent = Buffer.from(base64str,'base64')

上面的代码在react前端执行,
fileContent
通过钩子设置为变量,该变量通过

static uploadImage = (id, fileContent) => {
  return axios.put(ROOT_URL + "/images/" + id, fileContent);
}
然后它上传了

await s3.upload({
  Bucket: BUCKET_NAME,
  Key: KEY,
  Body: fileContent,
  ContentType: TYPE,
}).promise();
我在这个网站上找到了许多不同的解决方案,但仍然收到了错误。不知道我错过了什么

编辑:这是我发现的一个有用的线程,但没有修复错误。

不确定从何处读取的图像必须是base64,但您可以简单地使用类似于
fs
的内容读取文件内容,并按原样将其上载到S3

//从文件中读取内容
const fileContent=fs.readFileSync(文件名);
//设置S3上传参数
常量参数={
Bucket:Bucket\u名称,
Key:'cat.jpg',//要在S3中另存为的文件名
正文:文件内容
};
//将文件上载到bucket
等待s3.upload(params.promise();

我认为这是不可能的,我在前端的react中读取了文件,因此我不能使用
fs
@Spartan26783您的问题是,文件通过put请求放在服务器上,然后放在S3上。我假设这发生在服务器上。”上面的代码在react前端执行,
fileContent
通过钩子设置为变量,该变量被放入我的服务器“因此我使用react钩子将文件设置为变量,然后使用PUT请求将其发送到服务器。有更新吗?我现在尝试了更多的解决方案。知道为什么AWS可能不接受base64字符串吗?同样还在寻找一个
fs
解决方案,我唯一能想到的就是
FileReader