将图像上传到Amazon S3存储桶

时间:2019-05-04 09:36:07

标签: node.js amazon-web-services amazon-s3 aws-api-gateway koa

我正在上传一个图像(upload.single('file')是Multer中间件。),一个用于nodeJs的Koa框架。一切都可以在localhost上运行,但不能在prod环境上运行。这是产品环境的路径。 enter image description here

产品环境: Cliet-> Api网关-> NLB-> S3存储桶服务。

localhost env:向S3存储桶的隐秘服务。

问题是图像的大小在上传到S3存储桶之前可以使用时会增加,并且图像会变形(237kb增加到418kb)。但是使用localhost一切正常。我以邮递员为客户上传图片。

async create(ctx: Context, values: any): Promise<any> {

    // The image size increased before sending to S3 bucket
    console.log('REQUEST----', values.file)

    const params = {
      Bucket: env.Bucket,
      Key: `images/${values.file.originalname}`,
      Body: values.file.buffer,
      ACL: 'public-read',
      ContentType: values.file.mimetype,
      ContentLength: values.file.size,
    }


    try {
      const data = await s3.putObject(params).promise();
      console.log('Successfully uploaded file.', data);
      return true;
    } catch(e) {
         ctx.throw(HttpStatusCodes.InternalServerError, {
          message: `Something went wrong when updating advertisement` + e,
        });
    }
  }

0 个答案:

没有答案