我正在努力使我的脚本通过php在Amazon S3存储桶中显示test.jpg.
这是我到目前为止所拥有的:
require_once('library/AWS/sdk.class.php');
$s3 = new AmazonS3($key, $secret);
$objInfo = $s3->get_object_headers('my_bucket', 'test.jpg');
$obj = $s3->get_object('my_bucket', 'test.jpg', array('headers' => array('content-disposition' => $objInfo->header['_info']['content_type'])));
echo $obj->body;
这只是转储页面上的文件数据.我想我还需要发送content-disposition头文件,我认为这是在get_object()方法中完成的,但事实并非如此.
解决方法:
这两种方法都适合我.第一种方式似乎更简洁.
$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();
或者更罗嗦但仍然功能性的方式.
$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;
标签:php,amazon-s3
来源: https://codeday.me/bug/20191001/1838799.html