diff --git a/KS3/Headers.cs b/KS3/Headers.cs index 4f86669333956c115f4e38f37cd20a1a4de1ba9b..06220a9452fcdaa1d8e76500902be95078b84ee5 100644 --- a/KS3/Headers.cs +++ b/KS3/Headers.cs @@ -68,11 +68,16 @@ namespace KS3 /** Header for the WRITE_ACP permission */ public static String PERMISSION_WRITE_ACP = "x-kss-grant-write-acp"; + /** Header for the copy object*/ public static String XKssCopySource = "x-kss-copy-source"; + /** Header for whether to copy the metadata information of the source object. */ + public static String METADATA_DIRECTIVE = "x-kss-metadata-directive"; + /**callback */ public static String AsynchronousProcessingList = "kss-async-process"; + public static String NotifyURL = "kss-notifyurl"; public static String TaskId = "TaskID"; } diff --git a/KS3/KS3Client.cs b/KS3/KS3Client.cs index fa33975f38d6f9fc157077887fd8ac31f3810855..b60be066fbbcb2f1b7c3f14db1110345e56266c1 100644 --- a/KS3/KS3Client.cs +++ b/KS3/KS3Client.cs @@ -628,6 +628,12 @@ namespace KS3 else if (copyObjectRequest.CannedAcl != null) request.setHeader(Headers.KS3_CANNED_ACL, copyObjectRequest.CannedAcl.getCannedAclHeader()); request.getHeaders()[Headers.CONTENT_LENGTH] = "0"; + ObjectMetadata metadata = copyObjectRequest.Metadata; + if (metadata == null) + { + metadata = new ObjectMetadata(); + } + populateRequestMetadata(metadata, request); return this.invoke(request, new CopyObjectResultUnmarshaller(), copyObjectRequest.DestinationBucket, copyObjectRequest.DestinationObject); } /// diff --git a/KS3/Model/CopyObjectRequest.cs b/KS3/Model/CopyObjectRequest.cs index 370407024f85480fb9d04a6474f8b5540d3159ba..a85be8d54c4cfcc3503edcc6702cfbe109dd12a5 100644 --- a/KS3/Model/CopyObjectRequest.cs +++ b/KS3/Model/CopyObjectRequest.cs @@ -7,6 +7,37 @@ namespace KS3.Model { public class CopyObjectRequest:KS3Request { + public CopyObjectRequest() {} + + public CopyObjectRequest(string sourceBucket, string sourceObject, string destinationBucket, string destinationObject) + { + this.sourceBucket = sourceBucket; + this.sourceObject = sourceObject; + this.destinationBucket = destinationBucket; + this.destinationObject = destinationObject; + } + + public CopyObjectRequest(string sourceBucket, string sourceObject, string destinationBucket, string destinationObject, CannedAccessControlList cannedAcl) + { + this.sourceBucket = sourceBucket; + this.sourceObject = sourceObject; + this.destinationBucket = destinationBucket; + this.destinationObject = destinationObject; + this.cannedAcl = cannedAcl; + } + + public CopyObjectRequest(string sourceBucket, string sourceObject, string destinationBucket, string destinationObject, CannedAccessControlList cannedAcl, AccessControlList accessControlList) + { + this.sourceBucket = sourceBucket; + this.sourceObject = sourceObject; + this.destinationBucket = destinationBucket; + this.destinationObject = destinationObject; + this.cannedAcl = cannedAcl; + this.accessControlList = accessControlList; + } + + public ObjectMetadata Metadata { get; set; } + private String sourceBucket; public String SourceBucket diff --git a/KS3Sample/KS3Sample.cs b/KS3Sample/KS3Sample.cs index e9620044432fe2f9e94efec4c274da7922c4efbb..dd8b03c549d33a84e4cd2e3c380f594d5e45e9e9 100644 --- a/KS3Sample/KS3Sample.cs +++ b/KS3Sample/KS3Sample.cs @@ -464,8 +464,13 @@ namespace KS3Sample copyObjectRequest.SourceBucket = bucketName; copyObjectRequest.DestinationBucket = "test2-zzy-jr"; copyObjectRequest.DestinationObject = objKeyNameFileData; - //CannedAccessControlList cannedAcl=new CannedAccessControlList(CannedAccessControlList.PUBLICK_READ_WRITE); - //copyObjectRequest.CannedAcl = cannedAcl; + // CannedAccessControlList cannedAcl=new CannedAccessControlList(CannedAccessControlList.PUBLICK_READ_WRITE); + // copyObjectRequest.CannedAcl = cannedAcl; + // 指定目标Object的元信息 + // var metadata = new ObjectMetadata(); + // metadata.setHeader(Headers.METADATA_DIRECTIVE, "REPLACE"); + // metadata.setHeader(Headers.CONTENT_TYPE, "text/html"); + // copyObjectRequest.Metadata = metadata; CopyObjectResult result = ks3Client.copyObject(copyObjectRequest); Console.WriteLine("---------------------\n");