【问题标题】:How can I get the MIME types of objects in Amazon S3?如何在 Amazon S3 中获取 MIME 类型的对象?
【发布时间】:2019-07-09 12:19:21
【问题描述】:

有没有办法在 S3 中检索对象的 MIME 类型。我正在尝试实现一个解决方案,我将从 S3 获取多个对象。我可以通过某种方式从 Amazon S3 获取 MIME 类型,而不是使用那里的键然后获取子字符串来计算 MIME 类型?我正在使用 cloud berry explorer pro,我知道它可以让您设置 MIME 类型,但我们如何使用适用于 .NET 的 AWS 开发工具包或 REST API 检索此信息?

【问题讨论】:

    标签: .net amazon-s3 amazon-web-services


    【解决方案1】:

    REST API 为此提供了HEAD Object 操作,AWS SDK for .NET 通过GetObjectMetadata() 方法方便地包装了相同的功能:

    GetObjectMetadata 操作用于检索有关 特定对象或对象大小,而不实际获取对象 本身。 如果您只对对象感兴趣,这很有用 元数据,并且不想在对象数据上浪费带宽。 该 响应与 GetObject 响应相同,除了有 没有响应正文。 [强调我的]

    【讨论】:

    • 我不确定 HEAD OBJECT 是否会得到它,但我找到了解决方案。请在下面找到我的答案。
    • 获取存储在S3中的对象的MIME类型其实很容易。您所要做的就是 response = _s3.GetObject(request);字符串 MIMEtype = response.ContentType; response.ContentType 然后将从 s3 获取 MIME 类型。我们正在使用 Cloud berry explorer pro 上传对象并维护我们的 s3 帐户。它有很多默认的 MIME 类型,并在您上传对象时将其分配给对象。您还可以添加自己的 MIME 类型。您可以指定扩展名和 MIME 类型,因此下次您上传内容时,它会自动为该对象分配 MIME 类型。
    • @Abhi.Net:虽然GetObject() 原则上可以正常工作,但@Roman 建议 HEAD resp 是正确的。 GetObjectMetadata() 在这里,这对您的用例来说效率更高 - 有关详细信息,请参阅我对他的答案的更新。
    • 谢谢你们的解决方案。现在,我知道何时选择 GetObject() 和 GetobjectMetaData()。虽然在我的情况下我必须检索对象(差异类型 - css、html、jpeg、gif、flash)所以我将不得不使用 GetObject() 但我会记住 GetGetObjectMetaData() 以防我只需要元数据。
    【解决方案2】:

    要在同一个请求中获取文件和文件的mimeType...

    using (var client = AWSClientFactory.CreateAmazonS3Client(region))
    {
        var response = client.GetObject(bucket, key);
        var mimeType = response.Headers.ContentType;
        return new StreamWithMimeType(response.ResponseStream, mimeType); 
    }
    

    【讨论】:

    • HeadersCollection 有一个属性 ContentType 专门。我建议你使用它而不是字符串索引。
    • 我觉得应该是简单的var mimeType = response.Headers.ContentType;
    • @Bartosz 同意。已编辑。
    猜你喜欢
    • 1970-01-01
    • 2020-03-12
    • 2018-11-01
    • 2023-01-03
    • 2013-01-09
    • 1970-01-01
    • 2017-04-22
    • 2021-02-23
    • 2012-12-25
    相关资源
    最近更新 更多