amazon s3 – How do I stream data from retrieved “GetObject()” file to localfile on disk – C++ Aws SDK

I am trying to stream the data in the retrieved s3 file into a local file on disk. However, when I try my current code, I do not get a file stored on my computer. I first request the object from s3 using a getObjectOutcome. After success, I want to create a ofstream and redirect the objects stream buffer to my local object so that I can create a file on disc. However, the following code does not create a file. What am I doing wrong?

Here is the get object function:

bool GetObject(const Aws::String& objectKey,
    const Aws::String& fromBucket,
    const Aws::Client::ClientConfiguration& clientConfig) {
    Aws::S3::S3Client client(clientConfig);

    Aws::S3::Model::GetObjectRequest request;
    request.SetBucket(fromBucket);
    request.SetKey(objectKey);

    Aws::S3::Model::GetObjectOutcome outcome =
        client.GetObject(request);

    if (!outcome.IsSuccess()) {
        const Aws::S3::S3Error& err = outcome.GetError();
        std::cerr << "Error: GetObject: " <<
            err.GetExceptionName() << ": " << err.GetMessage() << std::endl;
    }
    else {
        std::cout << "Successfully retrieved '" << objectKey << "' from '"
            << fromBucket << "'." << std::endl;
        std::ofstream localfile;
        localfile.open(objectKey.c_str(), std::ios::out | std::ios::binary);
        auto retrieved = outcome.GetResult().GetBody().rdbuf();
        localfile << retrieved; 
        std::cout << "Done!";
    }

    return outcome.IsSuccess();
}

Here is an image of the memory for local file and retrieved:
image of output

Would someone teach me what I am doing this wrong, or how to correctly download data from s3 to disc?

Thanks.

I tried downloading some data from s3 to disc. I am having trouble outputting this data via stream buffer to local file. I have been looking online and cannot find a similar problem.

Read more here: Source link