0

我需要在我的 wordpress 博客上显示上传到我的 Amazon S3 帐户的 ACL:PRIVATE 的视频/图像文件。

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

提前致谢。

4

2 回答 2

5

这个问题可以通过执行以下步骤来解决:

  1. 从这里下载最新的稳定版 SDK
  2. 提取 .zip 文件并放在wamp/www文件夹中
  3. 将 config-sample.inc.php 文件重命名为config.inc.php
  4. 访问密钥和密钥(从 Amazon S3 帐户检索)添加到上述文件中,保存并退出
  5. 创建示例文件以显示来自 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 上的私有内容或媒体。

于 2012-04-20T10:14:31.810 回答
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);
}
于 2013-05-05T07:40:18.673 回答