如何下载S3对象并将其存储在服务器上

时间:2017-05-04 09:09:59

标签: php amazon-s3 amazon

我正在尝试下载私有S3对象并将其存储在网站服务器上

这是我正在尝试的

    $s3 = new S3Client([
        'version' => 'latest',
        'region' => 'ap-south-1',
        'credentials' => array(
            'key' => '*****',
            'secret' => '*******'
        )
    ]);

 $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;

如何在服务器上保存这些文件

1 个答案:

答案 0 :(得分:0)

来自Get an Object Using the AWS SDK for PHP

use Aws\S3\S3Client;

$bucket = '*** Your Bucket Name ***';
$keyname = '*** Your Object Key ***';
$filepath = '*** Your File Path ***';

// Instantiate the client.
$s3 = S3Client::factory();

// Save object to a file.
$result = $s3->getObject(array(
    'Bucket' => $bucket,
    'Key'    => $keyname,
    'SaveAs' => $filepath
));

如果您只想从命令行(而不是应用程序)下载文件,则可以使用AWS Command-Line Interface (CLI) - 它具有aws s3 cp命令。

您的代码中的Pre-signed URL可用于授予对存储在Amazon S3存储桶中的私有对象的限时访问权限。通常,您的应用程序会生成URL并将其包含在网页中,供用户单击并下载该对象。无需在服务器端使用它,因为服务器将具有授权访问Amazon S3中的内容的凭据。