从EC2访问S3存储以存储图像和显示图像

时间:2016-05-06 01:49:41

标签: php amazon-web-services amazon-s3 amazon-ec2

第一次搞乱AWS,我已经设置了我的EC2服务器和RDS。我想使用S3存储从我的EC2服务器上的页面上传的图像,将图像路径保存在数据库中,然后在稍后的时间显示图像。

我可以使用常规VPS轻松完成此操作但不确定如何从我的EC2服务器中的PHP代码访问S3存储。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

使用AWS开发工具包创建新的S3对象时,应返回完整的URL以访问此图像。

将成功创建新S3object时返回的URL保存到数据库中,然后使用现有的PHP代码将该URL从数据库中拉出来,将其显示在HTML页面中,我认为这是目前已经以某种形式做过......

上传文件,设置权限为public并返回新上传文件的URL的示例PHP代码:

use Aws\S3\S3Client;

$bucket = '*** Your Bucket Name ***';
$keyname = '*** Your Object Key ***';
// $filepath should be absolute path to a file on disk                      
$filepath = '*** Your File Path ***';

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

// Upload a file.
$result = $s3->putObject(array(
    'Bucket'       => $bucket,
    'Key'          => $keyname,
    'SourceFile'   => $filepath,
    'ContentType'  => 'text/plain',
    'ACL'          => 'public-read',
    'StorageClass' => 'REDUCED_REDUNDANCY',
    'Metadata'     => array(    
        'param1' => 'value 1',
        'param2' => 'value 2'
    )
));

echo $result['ObjectURL'];

S3 object example image