Both of these methods work for me. The first way seems more concise.
$command = $s3->getCommand('GetObject', array( 'Bucket' => 'bucket_name', 'Key' => 'object_name_in_s3' 'ResponseContentDisposition' => 'attachment; filename="'.$my_file_name.'"' )); $signedUrl = $command->createPresignedUrl('+15 minutes'); echo $signedUrl; header('Location: '.$signedUrl); die();
Or a more verbose, but still functional way.
$object = $s3->getObject(array( 'Bucket' => 'bucket_name', 'Key' => 'object_name_in_s3' )); header('Content-Description: File Transfer'); //this assumes content type is set when uploading the file. header('Content-Type: ' . $object->ContentType); header('Content-Disposition: attachment; filename=' . $my_file_name); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); //send file to browser for download. echo $object->body;
source share