当我在S3图像上单击"在新选项卡中打开"时,它会下载图像

Zor*_*gan 0 amazon-s3 amazon-web-services

这是我的存储桶政策:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Allow All",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::my-bucket/*"
        },
        {
            "Sid": "Deny All Actions On All But Media and Static Unless Defined User",
            "Effect": "Deny",
            "NotPrincipal": {
                "AWS": "arn:aws:iam::**********:root"
            },
            "Action": "s3:*",
            "NotResource": [
                "arn:aws:s3:::my-bucket/media/*",
                "arn:aws:s3:::my-bucket/static/*"
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

所以基本上我有3个文件夹:backup,staticmedia.我的媒体和静态文件夹中的所有对象都是公共的.

但是,当我单击完整路径时,例如此对象:( https://s3.us-east-2.amazonaws.com/my-bucket/media/x12wHSRoM9szjvY此obj实际上不存在但路径格式相同)即使它是图像,也没有.jpg或.png扩展名.这可能是我的问题的原因,如果是这样,我怎么能解决这个问题,以便我可以访问原始对象而不是在点击它时下载它?

Joh*_*ein 5

存储在Amazon S3中的对象也可以具有元数据.该元数据标识存储的文件类型,例如image/jpeg.

AWS命令行界面(CLI)上载文件时,它通常会设置元数据值,因此它应该可以正常工作.

但是,如果您的上传方法未设置元数据值,则浏览器无法知道文件类型.然后它将提供下载文件而不是显示它.(.png和.jpg等文件扩展名实际上并未设置文件类型.)

请参阅:如何向S3对象添加元数据? - 亚马逊简单存储服务