1

画像をAmazonS3にコピーする際に問題が発生しました

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://undesigned.org.za/2007/10/22/amazon-s3-php-class

RESTAWSの実装を提供します。

たとえば、画像をコピーする場合は、次のようにします。

$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

AWS PHP SDKを使用したことがあるかどうかはわかりませんが、AWS SDK はこのような状況で役立ちます。SDK を IAM ロールと組み合わせて使用​​して、S3 バケットへのアクセスを許可できます。手順は次のとおりです。

  1. PHP SDK を使用してファイルをアップロードするようにコードを変更します (必要な場合)。
  2. IAM ロールを作成し、必要な S3 バケットにロールのアクセス許可を付与します。
  3. EC2 インスタンスを開始するときに、ロールを使用することを指定します。

Then your code will automatically use the permissions that you grant that role. IAM gives the instance temporary credentials that the SDK uses. These credentials are automatically rotated for you by IAM and EC2.

于 2013-01-28T06:40:47.273 に答える
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 に答える