首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在aws lambda处理程序中使用multer-s3作为中间件

如何在aws lambda处理程序中使用multer-s3作为中间件
EN

Stack Overflow用户
提问于 2018-08-04 07:15:08
回答 2查看 5.5K关注 0票数 4

我试图将multipart/form-data表单发送到AWS方法。我需要能够向S3发送文件,并且使用传入的字符串参数,我需要将元数据记录到RDS。

现在,我可以使用expressmulter-s3实现这一点,如下所示;

代码语言:javascript
复制
var express = require('express');
var AWS = require('aws-sdk');
var multer = require('multer')
var multerS3 = require('multer-s3')

var s3 = new AWS.S3();
const app = express();

var upload = multer({
  storage: multerS3({
    s3: s3,
    bucket: 'my-bucket-name',
    metadata: function (req, file, cb) {
      cb(null, Object.assign({}, req.body));
    },
    key: function (req, file, cb) {
      cb(null, Date.now().toString() + '.fileExtension')
    }
  })
})

app.post('/data', upload.array('file'), function(req, res, next) {
  // here using req.files, i can save metadata to RDS
})

我的问题是,在AWS Lambda方法中可以使用multer-s3吗?如果答案是否定的,或者是不推荐的,你能给我指出正确的方向吗?

谢谢..

EN

回答 2

Stack Overflow用户

发布于 2019-01-30 19:34:56

我知道这个问题发布已经有一段时间了,但为了将来可能会在这里结束的人们:

简短的回答:不推荐。为什么?对于作为表单数据一部分发送的文件有一些奇怪的处理,不确定是由API还是S3发送的。我花了整整一天的时间试图用你提到的类似的方法从SPA角度应用程序上传图像,但我就是无法做到:我能够访问请求中的文件,之前由穆特解析过,并且有效地将每一个文件放到一个S3桶中,但是图像被破坏了。不确定它是否适用于其他类型的文件,但是这种方法需要更多的工作,而且感觉有点麻烦。将文件从AWS帐户外部上传到S3桶(即不使用任何AWS服务或EC2实例)的最佳和最简单的方法是使用预先签名的URL。您可以检查这篇文章,这可能会指向正确的方向。

话虽如此,你可以配置API网关以允许Lambda接收二进制文件。如果您使用的是Serverless,下面是一个插件,它可以使事情变得更简单:https://github.com/maciejtreder/serverless-apigw-binary

票数 10
EN

Stack Overflow用户

发布于 2022-09-27 20:22:05

您需要在“二进制媒体类型”中配置对Gateway (API ->设置)的二进制支持,添加允许的mime类型

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51683399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档