当我点击"在新标签中打开"在我的S3图片上,它会下载图片

时间:2018-06-03 06:25:40

标签: amazon-web-services amazon-s3

这是我的保管政策:

{
    "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/*"
            ]
        }
    ]
}

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

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

1 个答案:

答案 0 :(得分:5)

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

AWS Command-Line Interface (CLI)上传文件时,它通常会设置元数据值,因此它应该可以正常工作。

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

请参阅:How Do I Add Metadata to an S3 Object? - Amazon Simple Storage Service