在标题中,我似乎无法使其发挥作用,我正在遵循详细的here高级指南,但上传的所有图片似乎都是空白的。
我设置的内容:
/images/{object} - PUT
> Integration Request
AWS Region: ap-southeast-2
AWS Service: S3
AWS Subdomain [bucket name here]
HTTP method: PUT
Path override: /{object}
Execution Role [I have one set up]
> URL Path Paramaters
object -> method.request.path.object
我试图使用Postman发送带有Content-Type:image / png的PUT请求,并且正文是png文件的二进制上传。
我也尝试过使用curl:
curl -X PUT -H "Authorization: Bearer [token]" -H "Content-Type: image/gif" --upload-file ~/Pictures/bart.gif https://[api-url]/dev/images/cool.gif
它在服务器上创建文件,大小似乎是上传的两倍,当我查看时,我刚刚得到"图片有错误"。
当我尝试使用.txt文件(content-type:text / plain)时,它似乎可以正常工作。
有什么想法吗?
答案 0 :(得分:2)
在阅读很多并与AWS技术支持人员聊天后,问题似乎是您无法通过API网关进行二进制上传,因为任何通过的内容都会自动通过UTF-8编码
我可以想到一些解决方法,我的解决方案是在上传之前将文件作为base64,并在它们点击桶时触发lambda来解码它们
答案 1 :(得分:0)
这是一篇老帖子,但我得到了一个解决方案。 AWS现在支持通过APIGateway READ进行二进制上传。
通常,请转到您的API设置,然后添加二进制媒体类型。
之后,您可以在base64中处理该文件