如何以编程方式设置Amazon S3的Http Header

本文关键字:S3 Http Header Amazon 设置 编程 方式 | 更新日期: 2023-09-27 17:48:56

我想为我的asp.net web应用程序存储在S3中的文件设置过期日期头。

  • 第一种情况-在PutObject期间请求
  • 第二个案例-更新到期日每月一次至

如何以编程方式设置Amazon S3的Http Header

当您正在使用Asp.net时,我假设您正在使用AWS .net SDK。

要在上传对象时添加Expires(或任何其他http标头),将其作为PutObject请求的一部分添加。

var client = new Amazon.S3.AmazonS3Client(AWS_Key, AWS_SecretKey);
var req = new Amazon.S3.Model.PutObjectRequest()
                 .WithFilePath(@"C:'myfile.txt")
                 .WithKey("myfile.txt")
                 .WithBucketName("mybucket");
req.AddHeader("expires", "Thu, 01 Dec 1994 16:00:00 GMT");
client.PutObject(req);

要更改现有对象的标题,需要将该对象复制到其本身。

var req = new Amazon.S3.Model.CopyObjectRequest()
                 .WithDirective(Amazon.S3.Model.S3MetadataDirective.REPLACE)
                 .WithSourceBucket("mybucket")
                 .WithSourceKey("myfile.txt")
                 .WithDestinationBucket("mybucket")
                 .WithDestinationKey("myfile.txt");
req.AddHeader("expires", "Thu, 01 Dec 1994 16:00:00 GMT");
client.CopyObject(req);

注意: .WithDirective(Amazon.S3.Model.S3MetadataDirective.REPLACE)必须设置,以便指定新的标头。否则,现有的头文件将被复制。

更多信息请参见。net SDK文档

如果您使用的是AWS SDK 2。X则"AddHeader"方法不再可用。要添加标题,只需直接修改header集合。

req.Headers["expires"] = "Thu, 01 Dec 1994 16:00:00 GMT";

下面是Geoff在上面使用的修改后的例子:

var client = new Amazon.S3.AmazonS3Client(AWS_Key, AWS_SecretKey);
var req = PutObjectRequest req= new PutObjectRequest()
{
    BucketName = "mybucket",
    Key = "myfile.txt",
    FilePath = @"C:'myfile.txt"
};
req.Headers["expires"] = "Thu, 01 Dec 1994 16:00:00 GMT";
client.PutObject(req);

改变标题的方法是一样的:

var req = new Amazon.S3.Model.CopyObjectRequest()
{
    MetadataDirective = S3MetadataDirective.REPLACE,
    SourceBucket = "mybucket",
    SourceKey = "myfile.txt",
    DestinationBucket = "mybucket",
    DestinationKey = "myfile.txt"
};
req.Headers["expires"] = "Thu, 01 Dec 1994 16:00:00 GMT";
client.CopyObject(req);

对于AWSSDK。S3 V3。*它的工作原理如下:

request.Headers.Expires = DateTime.Now.AddMinutes(2);