我想为我的S3 web应用程序存储在asp.net中的文件设置过期日期头。
发布于 2011-04-04 09:52:18
在使用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文档。
发布于 2014-07-28 18:31:21
如果您使用的是AWSSDK2.x,那么"AddHeader“方法就不再可用。若要添加标头,只需直接修改标头集合。
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);发布于 2016-12-30 16:16:22
对于AWSSDK.S3 V3.*它的工作方式如下:
request.Headers.Expires = DateTime.Now.AddMinutes(2);https://stackoverflow.com/questions/5533051
复制相似问题