上传到S3的图像在打开时显示缺少图像图标

问题描述 投票:0回答:1

我对使用 AWS 还很陌生(实际上是几天前),并且正在尝试使用 API 网关将图像上传到 S3 存储桶。

我正在 YouTube 上关注本教程,其中展示了如何在 AWS 中设置所有内容,然后使用 Postman 调用我的 API 并将我的图像添加到 S3。

一切正常,POST 请求按预期运行并将文件添加到 S3。但是,当我尝试通过单击“打开”查看 S3 中的文件时,我得到以下内容而不是我发送的图像:

Display After I click Open

此外,如果我尝试下载该文件并查看它,它会显示:

无法打开文件“myfile.jpeg”。它可能已损坏或使用预览无法识别的文件格式。

图像本身似乎没有问题,因为当我将其直接上传到 S3 存储桶而不是通过 API 网关时,图像会按预期显示。我也完全按照教程进行操作,因此怀疑 AWS 本身是否存在权限或任何问题(但我愿意接受对此的挑战)。

所以我预计图像传输时会出现某种问题,但我对此还很陌生,所以不知道如何去检查。

任何帮助将不胜感激。

amazon-web-services amazon-s3 file-upload aws-api-gateway
1个回答
0
投票

经过大量的学习,我终于解决了这个问题。

事实证明,在 API 设置中的二进制媒体类型下,我放置了“/image/jpeg”而不是“image/jpeg”。

由于我的 POST 请求的 Content-Type 设置为“image/jpeg”,这意味着我的 API 从请求中获取 Base-64 编码数据并将其按原样发送到 S3,而不是将其视为二进制数据,因此在尝试从 S3 打开文件时会出现格式问题。

因此,解决方案只是更新我的二进制媒体类型以包含“image/jpeg”。

感谢@JohnRotenstein 通过发现图像是 base-64 编码来引导我走向正确的方向,并感谢评论中的有用链接。我学到了很多:)

© www.soinside.com 2019 - 2024. All rights reserved.