2017-07-17 5 views
0

私のアプリケーションでは、私はファイルをアップロードしているときに私が取得している最初のアップロードを取得しているローカルディレクトリからamazon S3バケットに画像をアップロードしようとしています。何を変えるべきか分かりません。ベンダーに変更や追加がありますか?助けてください。メソッドAws S3 S3Client :: putObject()が存在しません

コントローラー:Storage.php \

$s = new Storage(); 
$result = $s->upload($bucket,$keyname,$filepath); 

モデル:

<?php 
namespace app\models; 
use Yii; 
use yii\base\Model; 

class Storage extends Model 
{ 

    private $aws; 
    private $s3; 

    function __construct() { 
    $this->aws = Yii::$app->awssdk->getAwsSdk(); 
    $this->s3 = $this->aws->createS3(); 
    } 

    public function upload($bucket,$keyname,$filepath) { 
     $result = $this->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' 
     ) 
    )); 
    return $result; 

    } 

エラーは以下の通りです:

An Error occurred while handling another error:

exception 'ReflectionException' with message 'Method Aws\S3\S3Client::putObject() does not exist' in D:\xampp\htdocs\teespring-testmailer\vendor\yiisoft\yii2\web\ErrorHandler.php:195

+0

「putObject」ではなく「PutObject」を呼び出してみてください。 – SiZE

+0

@SiZE同じエラーはありません – lalithkumar

+0

あなたのベンダーとメソッドにこのクラス 'Aws \ S3 \ S3Client'がありますか?どのバージョンのライブラリを使用していますか? – SiZE

答えて

0

私が間違っている地域名を与えていますconfig \ web.php。問題です。私は地域を変更してからうまく動作します。

'awssdk' => [ 
      'class' => 'fedemotta\awssdk\AwsSdk', 
      'credentials' => [ //you can use a different method to grant access 
       'key' => 'XXXXXXXXXXXXXXXXX', 
       'secret' => 'XXXXXXXXXXXXXXXXXXXXX', 
      ], 
      'region' => 'us-west-2', //before 'us-east-1' 
      'version' => 'latest', 
     ], 
関連する問題