当前位置: 首页 > 知识库问答 >
问题:

方法aws\s3\s3Client::putObject()不存在

江宏放
2023-03-14

在我的应用程序中,我试图从本地目录上传图像到AmazonS3 bucket,这是首先上传的。当我上传文件时,我得到了错误。我不知道要更改什么。供应商中有什么要更改或添加的吗?请帮帮忙。

控制器:

$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;

    }

D:\xampp\htdocs\teespring-testmailer\vendor\yiisoft\yi2\web\errorhandler.php:195中出现异常“ReflectionException”,消息为“method aws\s3\s3client::putObject()不存在”

共有1个答案

单于海荣
2023-03-14

我在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', 
        ],
 类似资料:
  • 我面临着一个关于S3 bucket策略的谜,它阻止了我的一个PHPS3Client的putobject。im得到的错误是: 在“https://s3.amazonaws.com/reusable-system-dev/b1e42024e33d62b852d3c94c85f68c72.jpeg”上执行“putObject”时出错;AWS HTTP错误:客户端错误响应[url]https://s3.a

  • 我有一个很大的文件,其中包含我在应用程序中使用的所有函数。在它的顶部,我包含了名称空间。在文件的唯一内容下面是一个函数的大列表。 我有一个名为的函数,它最初只是将文件加载到本地磁盘并将一条记录插入数据库。现在我想把文件上传到AWS S3桶中,但是当我尝试使用AWS代码时,我在这里找到了:http://docs.AWS.amazon.com/amazons3/latest/dev/uploadobj

  • 以下是我所做的: 提前致谢

  • 我一直在尝试使用S3.Object.put()方法以编程方式将SNS消息上载到S3 bucket,如下所示: 这不起作用,所以我尝试了以下方法,尝试将一个对象上传到一个特定的S3 bucket。 然而,这两种方法都在默默地失败。我没有收到任何访问拒绝、错误消息等,但我也没有将我的消息上传到bucket。我不确定每次调用函数都会发生什么,希望能为那些通过编程成功地将文件上传到bucket的人提供指导

  • 我正在使用AWS Javascript SDK将文件放入我的S3。下面的代码旨在将用户头像上载到S3。我现在要硬编码accessKeyId和secretAccessKey,并从web表单获取文件和密钥上传。 上面的代码给了我一个SignatureDoesNotMatch的错误返回,我对此感到困惑,因为我以为我是让API执行签名,而它的早期版本(不幸的是,我无法复制)没有给我这个错误。

  • 问题内容: 我正在尝试在AWS ECS上设置Jenkins服务器,但是我必须发出将S3挂载到我的Docker容器的信息。 谁能为我提供可以在ECS服务中安装s3存储桶的任务定义?soi可以将我的Jenkins工作区存储在s3上 问题答案: 您可以在EC2实例中安装s3fs(或者可以将自定义AMI用于ECS群集)。将S3存储桶安装在EC2实例中,然后您就可以始终共享主机路径。