AWS s3Client-> copyObject成功但复制的对象丢失是乱码

Please assist. I am successfully uploading objects to S3 using the following code snippet:

    // Send a PutObject request and get the result object.
    $result = $this->s3EncryptionClient->putObject([
        '@MaterialsProvider' => $this->materialsProvider,
        '@CipherOptions' => $this->cipherOptions,
        'Bucket' => $this->s3BucketName,
        'Key'    => $key,
        'ContentType' => $mimeType,
        'ContentLength' => filesize($filePath),
        'ContentDisposition' => "attachment; filename='" . $fileName . "'",
        'Body' => fopen($filePath ,'r')
    ]);

And I can successfully download the object using the following snippet:

    // Download the contents of the object.
    $result = $this->s3EncryptionClient->getObject([
        '@MaterialsProvider' => $this->materialsProvider,
        '@CipherOptions' => $this->cipherOptions,
        'Bucket' => $this->s3BucketName,
        'Key'    => $key 
    ]);

The problem comes in when i try copy the object using the following code snippet:

    $result = $this->s3Client->CopyObject([
        'Bucket' => $this->s3BucketName,
        'CopySource' => $CopySource,
        'Key' => $dstKey,
    ]);

The object seems to be copied incorrectly and when i try download the new object using the download code i pasted earlier in this post, The object is not found and an AWSException

resulted in a 404 Not Found response

Any idea how I can resolve the issue?