2012-04-18 122 views
0

我需要使用ACL显示视频/图像文件:在我的wordpress博客上,PRIVATE上传到我的Amazon S3帐户。从亚马逊S3流式传输私人视频

我是基于PHP oops的编码的新手。任何脚本的帮助,链接参考,免费插件,甚至逻辑算法将是很大的帮助:)

在此先感谢。

+2

您可以先看一下PHP的SDK:http://aws.amazon.com/sdkforphp/另外通过代码示例,它们非常有用。 – alxbrd 2012-04-18 14:24:00

回答

2

这个问题可以通过实施以下步骤来解决:从here

  • SDK的

    1. 下载最新的稳定版本解压.zip文件&发生在wamp/www文件夹
    2. 重命名配置样本。 inc.php文件到config.inc.php
    3. 添加访问密钥&密钥成上述文件(从Amazon S3帐户检索),保存&出口
    4. 创建一个示例文件以从Amazon S3

    文件应如下所述的内容显示公共/私有对象如下:

    require('sdk.class.php'); 
    require('services/s3.class.php'); 
    
    $s3 = new AmazonS3(); 
    $bucket = "bucketname"; 
    $temp_link = $s3->get_object_url($bucket, 'your/folder/path/img.jpg', '5 minute'); 
    
    echo $temp_link; 
    

    在上面的代码中,您作为输出接收到的URL是私有对象的签名URL,因此它仅在5分钟内有效。

    您可以授予未来日期的访问权限,并且只允许授权用户访问您在Amazon S3上的私人内容或媒体。

  • 1

    这个问题有点老了,但我仍然发布它。今天我有一个类似的问题,发现有一个简单的答案。

    aws doc解释清楚,并有一个例子。

    http://docs.aws.amazon.com/aws-sdk-php-2/guide/latest/service-s3.html#amazon-s3-stream-wrapper

    基本上,需要注册AWS”流封包和使用S3://协议。

    这是我的代码示例。

    use Aws\Common\Aws; 
    use Aws\S3\Enum\CannedAcl; 
    use Aws\S3\Exception\S3Exception; 
    
    $s3 = Aws::factory(array(
        'key' => Config::get('aws.key'), 
        'secret' => Config::get('aws.secret'), 
        'region' => Config::get('aws.region') 
    ))->get('s3'); 
    
    $s3->registerStreamWrapper(); 
    
    // now read file from s3 
    // from the doc. 
    
    // Open a stream in read-only mode 
    if ($stream = fopen('s3://bucket/key', 'r')) { 
        // While the stream is still open 
        while (!feof($stream)) { 
         // Read 1024 bytes from the stream 
         echo fread($stream, 1024); 
        } 
        // Be sure to close the stream resource when you're done with it 
        fclose($stream); 
    }