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