1

我在将图像复制到 Amazon S3 时遇到问题

我正在使用 PHP 复制功能将图像从一台服务器复制到另一台服务器..它适用于 go-daddy 主机服务器。但它不适用于 S3。这是不起作用的代码:

$strSource =http://img.youtube.com/vi/got6nXcpLGA/hqdefault.jpg

copy($strSource ,$dest);

$dest 是我的存储桶 url,其中包含用于上传图像的文件夹

4

3 回答 3

2

我不确定您是否可以像那样将图像复制到 AWS。我建议使用与 AWS 服务器对话的库,然后运行您的命令。

检查这个 - http://undesign.org.za/2007/10/22/amazon-s3-php-class

REST为 AWS 提供了一个实现。

例如,如果要复制图像,可以执行以下操作:

$s3 = new S3($awsAccessKey, $awsSecretKey);
$s3->copyObject($srcBucket, $srcName, $bucketName, $saveName, $metaHeaders = array(), $requestHeaders = array());

$awsAccessKey并且$awsSecretKey是 AWS a/c 的密钥。

检查一下,希望它有所帮助。

于 2013-01-28T06:35:37.553 回答
0

这是我从文档中复制 S3 存储桶中的对象的示例

public function copyObject($sSourceKey, $sDestKey)
    {
        $this->checkKey($sSourceKey);
        $this->checkKey($sDestKey);

        $bRet = false;

        // http://docs.aws.amazon.com/aws-sdk-php-2/latest/class-Aws.S3.S3Client.html#_copyObject
        try {
            $response = $this->_oS3Client->copyObject(
                array(
                    'Bucket' => $this->getBucketName(),
                    'Key' => $sDestKey,
                    'CopySource' => urlencode($this->getBucketName() . '/' . $sSourceKey),
                )
            );

            if (isset($response['LastModified'])) {
                $bRet = true;
            }
        } catch (Exception $e) {

            $GLOBALS['error'] = 1;
            $GLOBALS["info_msg"][] = __METHOD__ . ' ' . $e->getMessage();
            $bRet = false;
        }

        return $bRet;
    }
于 2013-03-06T14:48:59.427 回答
0

不确定您是否使用过AWS PHP 开发工具包,但 AWS 开发工具包可以在这种情况下派上用场。SDK 可以与 IAM 角色结合使用,以授予对您的 S3 存储桶的访问权限。这些是步骤:

  1. 修改您的代码以使用 PHP SDK 上传文件(如果需要)。
  2. 创建一个 IAM 角色并将该角色权限授予所需的 S3 存储桶。
  3. 当您启动 EC2 实例时,指定您要使用该角色。

然后您的代码将自动使用您授予该角色的权限。IAM 为开发工具包使用的实例提供临时凭证。IAM 和 EC2 会自动为您轮换这些凭证。

于 2013-01-28T06:40:47.273 回答