From 84a922aa00edfa68a61a45252f4c196a2c5d876c Mon Sep 17 00:00:00 2001 From: wangqiubin <649467444@qq.com> Date: Thu, 26 Sep 2024 19:15:41 +0800 Subject: [PATCH 1/2] =?UTF-8?q?copyObject=E6=94=AF=E6=8C=81=E4=BC=A0?= =?UTF-8?q?=E5=85=A5=E8=AF=B7=E6=B1=82=E5=A4=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- KS3/Headers.cs | 5 +++++ KS3/KS3Client.cs | 1 + KS3/Model/CopyObjectRequest.cs | 31 +++++++++++++++++++++++++++++++ KS3Sample/KS3Sample.cs | 9 +++++++-- 4 files changed, 44 insertions(+), 2 deletions(-) diff --git a/KS3/Headers.cs b/KS3/Headers.cs index 4f86669..06220a9 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 fa33975..19d0e29 100644 --- a/KS3/KS3Client.cs +++ b/KS3/KS3Client.cs @@ -628,6 +628,7 @@ namespace KS3 else if (copyObjectRequest.CannedAcl != null) request.setHeader(Headers.KS3_CANNED_ACL, copyObjectRequest.CannedAcl.getCannedAclHeader()); request.getHeaders()[Headers.CONTENT_LENGTH] = "0"; + populateRequestMetadata(copyObjectRequest.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 3704070..a85be8d 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 e962004..dd8b03c 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"); -- Gitee From e46582d5064a5ebfbe563a688b5daa313c31355d Mon Sep 17 00:00:00 2001 From: wangqiubin <649467444@qq.com> Date: Wed, 9 Oct 2024 15:39:27 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20copyObject=E7=9A=84Metadata=E5=88=A4?= =?UTF-8?q?=E7=A9=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- KS3/KS3Client.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/KS3/KS3Client.cs b/KS3/KS3Client.cs index 19d0e29..b60be06 100644 --- a/KS3/KS3Client.cs +++ b/KS3/KS3Client.cs @@ -628,7 +628,12 @@ namespace KS3 else if (copyObjectRequest.CannedAcl != null) request.setHeader(Headers.KS3_CANNED_ACL, copyObjectRequest.CannedAcl.getCannedAclHeader()); request.getHeaders()[Headers.CONTENT_LENGTH] = "0"; - populateRequestMetadata(copyObjectRequest.Metadata, request); + ObjectMetadata metadata = copyObjectRequest.Metadata; + if (metadata == null) + { + metadata = new ObjectMetadata(); + } + populateRequestMetadata(metadata, request); return this.invoke(request, new CopyObjectResultUnmarshaller(), copyObjectRequest.DestinationBucket, copyObjectRequest.DestinationObject); } /// -- Gitee