[英]aws s3Client PutObject Access Denied, but CyberDuck can PutObject Successfully
[英]Method Aws\S3\S3Client::putObject() does not exist
在我的應用程序中,我試圖將圖像從首先上傳的本地目錄上傳到Amazon S3存儲桶。當我上傳文件時,我遇到了錯誤。我不知道要更改什么。更改或添加供應商? 請幫忙。
控制器:
$s = new Storage();
$result = $s->upload($bucket,$keyname,$filepath);
型號\\ Storage.php:
<?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;
}
錯誤如下:
處理另一個錯誤時發生錯誤:
D:\\ xampp \\ htdocs \\ teespring-testmailer \\ vendor \\ yiisoft \\ yii2 \\ web \\ ErrorHandler.php:195中的消息``方法Aws \\ S3 \\ S3Client :: putObject()不存在''的異常'ReflectionException'
我在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',
],
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.