【问题标题】:Setting content-encoding and content-type with Amazon API for .NET使用 Amazon API for .NET 设置内容编码和内容类型
【发布时间】:2011-12-02 12:30:52
【问题描述】:

如何将 S3 存储桶文件头设置为如下:

内容编码:gzip 内容类型:文本/css

我正在使用适用于 .NET 的 SDK 使用 Amazon API。我正在使用 PutObjectRequest 将文件上传到 S3。上传文件时,内容类型和内容编码标头未更新的问题(我已通过 Amazon 控制台上的文件属性检查)。

示例:

 request.AddHeader("expires", EXPIRES_DATE);
 request.AddHeader("content-encoding", "gzip");         
 request.ContentType = "text/css";

也试过了:

NameValueCollection metadata = new NameValueCollection();
metadata.Add("content-type", "text/css");
metadata.Add("content-encoding", "gzip");
request.WithMetaData(metadata);

我做错了什么?

【问题讨论】:

    标签: c# asp.net api header amazon-s3


    【解决方案1】:

    当时接受的答案是正确的,但 API 在 2014 年更新,所以这是新方法

    PutObjectRequest request = new PutObjectRequest
    {
        BucketName = bucketName,
        ContentType = "text/css",
        Key = filename
    };
    request.Headers["Content-Encoding"] = "gzip";
    

    【讨论】:

    • 这应该是现在公认的答案。当前接受的答案已过时
    • 如果您使用 cli 执行此操作,它看起来像这样:aws s3 cp my_object s3://bucket/path/to/object --content-encoding gzip
    【解决方案2】:

    2019 年使用最新的 API,代码将如下所示:

    PutObjectRequest request = new PutObjectRequest {
        BucketName = bucketName,
        ContentType = "text/css",
        Key = filename
    };
    request.Headers.ContentEncoding = "gzip";
    

    【讨论】:

      【解决方案3】:

      您将 content-type 添加到 api 中的 contentType 属性中,如下所示

       PutObjectRequest request = new PutObjectRequest();
          string contentType = "text/css";
          request = request.WithContentType(contentType); 
      

      //用于内容编码 //添加以下标题

      request.AddHeader("content-encoding","gzip");
      

      希望这会有所帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-11-29
        • 2020-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-05
        • 1970-01-01
        相关资源
        最近更新 更多