diff --git a/xos-cpp-demo/awssdk/include/aws/s3/model/PutObjectRequest.h b/xos-cpp-demo/awssdk/include/aws/s3/model/PutObjectRequest.h index f61893fa856019550b4bcf8243b6b8de04a2e834..aa7447528e4491e94813f62c732d600a54fa9169 100644 --- a/xos-cpp-demo/awssdk/include/aws/s3/model/PutObjectRequest.h +++ b/xos-cpp-demo/awssdk/include/aws/s3/model/PutObjectRequest.h @@ -89,6 +89,46 @@ namespace Model */ inline PutObjectRequest& WithACL(ObjectCannedACL&& value) { SetACL(std::move(value)); return *this;} + /** + *

Append Object

+ */ + inline bool GetAppend() const{ return m_append; } + + /** + *

Append Object

+ */ + inline bool AppendHasBeenSet() const { return m_appendHasBeenSet; } + + /** + *

Append Object

+ */ + inline void SetAppend(bool value) { m_appendHasBeenSet = true; m_append = value; } + + /** + *

Append Object

+ */ + inline PutObjectRequest& WithAppend(bool value) { SetAppend(value); return *this;} + + + /** + *

Position to allow appending

+ */ + inline int GetAppendPosition() const{ return m_appendPosition; } + + /** + *

Position to allow appending

+ */ + inline bool AppendPositionHasBeenSet() const { return m_appendPositionHasBeenSet; } + + /** + *

Position to allow appending

+ */ + inline void SetAppendPosition(int value) { m_appendPositionHasBeenSet = true; m_appendPosition = value; } + + /** + *

Position to allow appending

+ */ + inline PutObjectRequest& WithAppendPosition(int value) { SetAppendPosition(value); return *this;} /** *

The bucket name to which the PUT operation was initiated.

When using @@ -1890,6 +1930,11 @@ namespace Model ObjectCannedACL m_aCL; bool m_aCLHasBeenSet; + bool m_append; + bool m_appendHasBeenSet; + + int m_appendPosition; + bool m_appendPositionHasBeenSet; Aws::String m_bucket; bool m_bucketHasBeenSet; diff --git a/xos-cpp-demo/awssdk/include/aws/s3/model/PutObjectResult.h b/xos-cpp-demo/awssdk/include/aws/s3/model/PutObjectResult.h index a20fe77e51227183c71b66e0752b2660d457bd68..f1aff93f262c117ee91731a662449102b37723e9 100644 --- a/xos-cpp-demo/awssdk/include/aws/s3/model/PutObjectResult.h +++ b/xos-cpp-demo/awssdk/include/aws/s3/model/PutObjectResult.h @@ -33,6 +33,20 @@ namespace Model PutObjectResult(const Aws::AmazonWebServiceResult& result); PutObjectResult& operator=(const Aws::AmazonWebServiceResult& result); + /** + *

Position to allow appending

+ */ + inline int GetAppendPosition() const{ return m_appendPosition; } + + /** + *

Position to allow appending

+ */ + inline void SetAppendPosition(int value) { m_appendPosition = value; } + + /** + *

Position to allow appending

+ */ + inline PutObjectResult& WithAppendPosition(int value) { SetAppendPosition(value); return *this;} /** *

If the expiration is configured for the object (see input_data = + Aws::MakeShared("SampleAllocationTag", + file_name.c_str(), + std::ios_base::in | std::ios_base::binary); + std::shared_ptr append_data = + Aws::MakeShared("SampleAllocationTag", + file_name.c_str(), + std::ios_base::in | std::ios_base::binary); + + std::cout<<"首次写入Pos: " << appPos << std::endl; + + request.SetBody(input_data); + Aws::S3::Model::PutObjectOutcome outcome = s3_client->PutObject(request); + + if (!outcome.IsSuccess()) + { + std::cout << "ERROR: PutObject: " << "Error Msg: " << outcome.GetError().GetMessage() << std::endl; + return false; + } + else + { + appPos = outcome.GetResult().GetAppendPosition(); + std::cout<<"追加写入Pos: " << appPos << std::endl; + + request.SetAppend(true); + request.SetAppendPosition(appPos); + request.SetBody(append_data); + + outcome = s3_client->PutObject(request); + + std::cout << "Etag:" << outcome.GetResult().GetETag() << std::endl; + return true; + } +} + bool S3Demo::GetObject() { const Aws::String object_name = "ExampleObject.txt"; diff --git a/xos-cpp-demo/demo/S3Demo.h b/xos-cpp-demo/demo/S3Demo.h index 283f798c75b7159487ce6b3e4f77eb1e78450c3d..40d7681eb48976876190caac9dcda88d3e15c610 100644 --- a/xos-cpp-demo/demo/S3Demo.h +++ b/xos-cpp-demo/demo/S3Demo.h @@ -41,6 +41,7 @@ public: bool ListObjectVersions(); bool HeadObject(); bool PutObject(); + bool AppendObject(); bool GetObject(); bool GeneratePresignUrl(); bool GetObjectAcl(); diff --git a/xos-cpp-demo/demo/main.cpp b/xos-cpp-demo/demo/main.cpp index aa2913621280f3f56c04262d13862df2588c60b1..4f7750c87c73d9243d890221ccdc9a26d6922cfb 100644 --- a/xos-cpp-demo/demo/main.cpp +++ b/xos-cpp-demo/demo/main.cpp @@ -34,6 +34,7 @@ int main() //s3.GetObjectAcl(); //s3.PutObjectAcl(); //s3.PutObject(); + // s3.AppendObject(); //s3.GetObject(); //s3.CopyObject(); //s3.DeleteObject();