diff --git a/sdk/include/alibabacloud/oss/model/UploadPartRequest.h b/sdk/include/alibabacloud/oss/model/UploadPartRequest.h index 1ebf02f..be6714a 100644 --- a/sdk/include/alibabacloud/oss/model/UploadPartRequest.h +++ b/sdk/include/alibabacloud/oss/model/UploadPartRequest.h @@ -17,6 +17,7 @@ #pragma once #include #include +#include #include #include @@ -32,7 +33,7 @@ namespace OSS const std::shared_ptr& content); UploadPartRequest(const std::string &bucket, const std::string& key, int partNumber, const std::string& uploadId, - const std::shared_ptr& content); + const std::shared_ptr& content, const ObjectMetaData& metaData); virtual std::shared_ptr Body() const; void setPartNumber(int partNumber); void setUploadId(const std::string& uploadId); @@ -57,6 +58,7 @@ namespace OSS std::string userAgent_; std::string contentMd5_; bool contentMd5IsSet_; + ObjectMetaData metaData_; }; } } diff --git a/sdk/src/model/UploadPartRequest.cc b/sdk/src/model/UploadPartRequest.cc index 32fdb04..7bc3be4 100644 --- a/sdk/src/model/UploadPartRequest.cc +++ b/sdk/src/model/UploadPartRequest.cc @@ -23,13 +23,13 @@ using namespace AlibabaCloud::OSS; UploadPartRequest::UploadPartRequest(const std::string &bucket, const std::string &key, const std::shared_ptr &content) : - UploadPartRequest(bucket, key, 0, "", content) + UploadPartRequest(bucket, key, 0, "", content, ObjectMetaData()) { } UploadPartRequest::UploadPartRequest(const std::string &bucket, const std::string &key, int partNumber, const std::string &uploadId, - const std::shared_ptr &content) : + const std::shared_ptr &content, const ObjectMetaData& metaData) : OssObjectRequest(bucket, key), partNumber_(partNumber), uploadId_(uploadId), @@ -37,7 +37,8 @@ UploadPartRequest::UploadPartRequest(const std::string &bucket, const std::strin contentLengthIsSet_(false), trafficLimit_(0), userAgent_(), - contentMd5IsSet_(false) + contentMd5IsSet_(false), + metaData_(metaData) { setFlags(Flags() | REQUEST_FLAG_CHECK_CRC64); } @@ -96,7 +97,9 @@ std::shared_ptr UploadPartRequest::Body() const HeaderCollection UploadPartRequest::specialHeaders() const { - auto headers = OssObjectRequest::specialHeaders(); + auto headers = metaData_.toHeaderCollection(); + auto baseHeaders = OssObjectRequest::specialHeaders(); + headers.insert(baseHeaders.begin(), baseHeaders.end()); headers[Http::CONTENT_TYPE] = ""; if (contentLengthIsSet_) { headers[Http::CONTENT_LENGTH] = std::to_string(contentLength_); diff --git a/sdk/src/resumable/ResumableUploader.cc b/sdk/src/resumable/ResumableUploader.cc index 030f940..e6e3ece 100644 --- a/sdk/src/resumable/ResumableUploader.cc +++ b/sdk/src/resumable/ResumableUploader.cc @@ -102,7 +102,7 @@ PutObjectOutcome ResumableUploader::Upload() std::ios::in | std::ios::binary); content->seekg(offset, content->beg); - UploadPartRequest uploadPartRequest(request_.Bucket(), request_.Key(), part.PartNumber(), uploadID_, content); + UploadPartRequest uploadPartRequest(request_.Bucket(), request_.Key(), part.PartNumber(), uploadID_, content, request_.MetaData()); uploadPartRequest.setContentLength(length); UploaderTransferState transferState;