我正在尝试使用 nodejs 后端服务器将视频从反应本机应用程序上传到 aws s3 存储桶。我的做法是,
- 在 react 本机应用程序级别将视频转换为 base64
- 通过在请求中附加 base64 数据作为 formdata 向后端服务器发送 POST 请求
- 在后端服务器上使用 multer 上传到 s3 存储桶。
我在使用这种方法时遇到了一些问题
我可以上传小尺寸的视频 (kb),当我尝试上传 4mb 视频时它在我的本地机器上工作正常,但在服务器(具有 1Gb 内存的 aws ec2 实例)中,这导致服务器卡住。
const params = {
Bucket: S3_VIDEO_BUCKET_NAME,
Key: `${name}`,
Body: bufferContent,
ContentEncoding: 'base64',
ContentType: `${context}/${type}`,
}
s3.upload(params, function (err, data) {
if (err) {
console.log('Error', err)
isError = true
}
if (data) {
console.log('Upload Success', data.Location)
console.log(`${S3_VIDEO_CLOUD_FRONT_DOMAIN}${data.Key}`)
key = data.Key
}
})
当我上传大小约为(4mb)的视频而本地服务器没有这个问题时,为什么远程服务器会卡住?
转换为 base 64 是最好的方法还是有没有办法将视频上传到 s3 存储桶而不将视频转换为 base 64?
已编辑 => 我正在使用 multer,最大 fieldSize 为 20mb。
var upload = multer({ limits: { fieldSize: 20 * 1024 * 1024 } })