首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何显示云端S3桶中的图片而不是下载?

如何显示云端S3桶中的图片而不是下载?
EN

Stack Overflow用户
提问于 2022-03-09 16:38:33
回答 2查看 1.8K关注 0票数 1

我有一个包含图像的存储桶,该桶内容是通过Cloudfront分发版和S3桶之间关联的OAI从Cloudfront发行版分发的。我的问题是,当我试图显示来自那个桶的任何图像时,浏览器尝试下载而不是显示。我在这里读到了一些关于同一个问题的问题,我看到来自图像的元数据应该是image/jpeg或image/png,所以我这样做了,但是出于某些原因,一些图像试图下载而不是显示,即使在此之后,我根据图像扩展更改了元数据内容类型。应该做些什么来解决这个问题?

EN

回答 2

Stack Overflow用户

发布于 2022-03-09 16:41:47

您可以尝试以下方法来解决您的问题:

  1. 检查您的图像是否为jpg/png/img格式。
  2. 当您将图像上传到亚马逊简单存储服务(Amazon S3)中时,您可以选择图像>属性(右上)。您将看到图像和它会看起来像这样的链接。现在,如果您尝试使用该链接打开该文件,您将看到拒绝访问的消息。默认情况下,S3文件是私有的,因为许多人使用它来存储敏感数据。您需要更改文件的权限,以便外部世界可以访问它们。单击右上角的“属性”。然后打开“权限”部分并添加一个项。我们将授予“每个人”阅读图片的权利。点击编辑ACL检查每个人的所有阅读框(公共访问)。检查一下“我理解效果.”盒。现在单击“保存更改”按钮。现在复制对象URL并在一个新选项卡中打开。图像现在将显示,而不是下载。

这是我用云前端创建的链接。

现在让我们看看我是如何创建它的:1.创建cloudfront发行版。您可以在这里看到必要的步骤。重要注意事项 2.请100%确保桶映像是公共的,而不是私有的(如果它是私有的,您将得到重要注意事项错误) 3。将所有内容保留为默认值。4.创建cloudfront发行版后,等待15-30分钟才能启用它!5.将图像上传到S3进行测试。将所有值设为默认值(建议值)。6.现在打开带有图像和tada的CloudFront域!你的形象现在准备好了。请跟我来,因为我花了5-6个小时解决你的问题!

票数 0
EN

Stack Overflow用户

发布于 2022-03-14 17:58:27

我用这种方法解决了这个问题:

  • python脚本根据其扩展设置图像的元数据内容类型。基本上,脚本的核心是以下功能:
代码语言:javascript
复制
def update_metadata(key, bucket, extension):
  s3.copy_object(Key=key, Bucket=bucket,
               CopySource={"Bucket": bucket, "Key": key},
               ContentType=f"image/{extension}",
               MetadataDirective="REPLACE")

参数:

  • 图像名称
  • 桶名
  • 图像延拓

这样,脚本将覆盖当前的内容类型,并在通过浏览器进行请求时显示图像。使用的图书馆是boto3。

要点:在运行更改之后,有必要在Cloudfront发行版上创建一个无效,以便一切正常工作。

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

https://stackoverflow.com/questions/71412874

复制
相关文章

相似问题

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