无服务器框架 + Express.js |上传图片结果 corrupt/broken

Serverless framework + Express.js | Uploading images turns out corrupt/broken

我花了太多时间来让它工作,我看到类似的问题发布在 SO 上,但我还没有找到可以解决我的问题的解决方案。

我使用无服务器框架创建了一个 REST API。我现在想创建一个端点,用户可以向该端点发送 POST 请求,其中包含正文中的图像作为表单数据。

我这里有端点:

端点使用中间件 uploader.single('param'),然后将结果传递给函数 uploadImage


中间件如下所示:


图像由库“multer”存储:


但是坏了


我读到您可能需要将 binaryMediaTypes 添加到 serverless.ts 中的 apiGateway 提供程序,所以我做了以下操作:

谁能帮我解决这个问题?

我怀疑该错误是您的多部分处理程序的边缘情况或编码问题,或者可能是 serverless-offline 插件的错误。但这有点无关紧要。

这个问题很难找到解决方案的原因是你选择的路径不符合无服务器开发理念。 Lambda 在其执行环境中没有任何文件系统 space(好吧,只有几 MB。但是一旦 lambda 执行完成,space 就会被释放)。您需要将这些图像存储在其他地方,像 S3 这样持久的地方。

最好的做法是创建一个 API 端点,其中 returns 一个 presigned URL 用于 S3 存储桶。

然后您的用户可以将图像上传到 URL。

这里有一篇很好的文章列出了这个确切的用例:https://serverlessfirst.com/serverless-photo-upload-api/