amazon web services - AWS downloading images/document using PHP

one text

I hope you are doing well.

My issue using AWS S3 is when I download images (png, jpg, jpeg) and documents (txt, doc, docx) from the bucket, the files are corrupted. I can't open them even though in the AWS S3 storage i can see them and downloaded manually and they open.

The only type I can upload and download correctly is PDF. With the other types I upload them correctly but when I download them the issue happens.

Here is my code for download:

    require 'vendor/autoload.php';
    use Aws\S3\S3Client;
    use Aws\S3\Exception\S3Exception;
    // AWS Info
    $bucketName = 'some text';
    $IAM_KEY = 'some text';
    $IAM_SECRET = 'some text';

    try {
        // You may need to change the region. It will say in the URL when the bucket is open
        // and on creation.
        $s3 = S3Client::factory(
            array(
                'credentials' => array(
                    'key' => $IAM_KEY,
                    'secret' => $IAM_SECRET
                ),
                'version' => '2006-03-01',
                'region'  => 'us-east-2',
                'signature' => 'v4'
            )
        );
    } catch (Exception $e) {
        // We use a die, so if this fails. It stops here. Typically this is a REST call so this would
        // return a json object.
        die("Error: " . $e->getMessage());
    }
    $keyName = 'filepath';
    // Add it to S3
    try {
        // Uploaded:
        $result =   $s3->getObject(
            array(
                'Bucket'=>$bucketName,
                'Key' =>  $keyName
            )
        );
        header("Content-Type: {$result['ContentType']}");
        header('Content-Disposition: filename="' . basename($keyName) .'"');
        echo $result['Body'];
    } catch (Exception $e) {
        die("Error: " . $e->getMessage());
   }


Source