使用Api Gateway(Lambda函数)将图像上传到S3存储桶

时间:2019-04-17 06:56:59

标签: amazon-s3 aws-lambda aws-api-gateway aws-sdk-nodejs

我正在尝试从邮递员上传图像(base64),我可以看到当我按下Serverless API时,在S3存储桶中添加了一些东西,但没有图像,我使用的是nodejs Lambda函数,我尝试这样做许多解决方案,但没有奏效。请向我建议我错了:

awk ... file

Response in S3 bucket

when click on any of the response, the complete out is coming as an image

Postman base64 image string

请让我知道,我在哪里缺少一些代码。将不胜感激。

1 个答案:

答案 0 :(得分:7)

将应在Web浏览器中打开的对象上载到S3时,需要设置正确的内容类型。当S3服务您的对象时,您设置的内容类型将作为HTTP标头发送。

Web浏览器使用MIME types确定如何处理URL,而不是文件扩展名。

对于您而言,您传递给s3.upload的参数中缺少内容类型。而且,密钥不正确。

应该是:

const params = {
  Bucket: 'bucket-name',
  Key: fileFullName // must be a path within your bucket and not an url like you have in fileFullPath,
  Body: buffer,
  ContentType: fileMime.mime // Sets the content type header, without this your browser cannot infer the type (browsers use mime types, not file extensions)
};