0

我正在尝试使用 nodejs 后端服务器将视频从反应本机应用程序上传到 aws s3 存储桶。我的做法是,

  1. 在 react 本机应用程序级别将视频转换为 base64
  2. 通过在请求中附加 base64 数据作为 formdata 向后端服务器发送 POST 请求
  3. 在后端服务器上使用 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
        }
})
  1. 当我上传大小约为(4mb)的视频而本地服务器没有这个问题时,为什么远程服务器会卡住?

  2. 转换为 base 64 是最好的方法还是有没有办法将视频上传到 s3 存储桶而不将视频转换为 base 64?

已编辑 => 我正在使用 multer,最大 fieldSize 为 20mb。

var upload = multer({ limits: { fieldSize: 20 * 1024 * 1024 } }) 
4

1 回答 1

0

如果您的服务器使用 nginx,那么您可能需要检查client_max_body_size默认为 1mb 更改 Nginx 正文大小

于 2021-07-05T13:19:29.500 回答