【发布时间】:2019-02-26 09:54:46
【问题描述】:
我正在尝试这样做:
- 前端:使用
<input type="file">和<input type="button" onClick="...">设置要上传的文件 - 使用
file[0]从<input type="file">的值中检索文件对象。 - 使用 Javascript
Fetchapi 调用我的 AWS API-GatewayPostAPI。
我在请求中尝试了multipart/form-data 和application/json。
- 在 AWS Lambda 上,我使用了 Buffer Object 来消耗 body。
我尝试过使用Buffer(body, "utf8")、Buffer(body, "base64")、Buffer(body, "binary")。
- 这反过来又被推送到
S3以使用putObject进行存储。
问题:
S3中设置的文件对象的文件大小为 0 或某个随机值与原始文件大小不匹配。无法打开从
S3下载的文件。
失败的方法
我考虑过multer 和multiparty。这些似乎是 ExpressJS 中间件,并期望 HttpRequest 对象作为输入(这没有明确提及。似乎我很无知,不能假设这些只能与 HttpRequest 对象一起使用,我花了同时找出答案)。我也很无知,不知道如何将 AWS 事件对象转换为 HttpRequest 对象。不过话虽如此,仅仅为了管理文件上传而使用 Express 引擎似乎有些过分。
将我的S3 存储桶暴露为public-read-write 似乎相当不安全。所以我不考虑前端直接将东西移入/移出我的S3 存储桶。
我的请求
谁能告诉我如何让它工作?和/或这种方法的替代方法?
【问题讨论】:
标签: node.js amazon-web-services amazon-s3 file-upload aws-lambda