CakePHP2でAWSのS3プラグインを使用しているのですがアップロードがうまくいきません。

投稿者: Anonymous

お世話になっております。
ご回答ありがとうございます。
現在、ご紹介いただいた https://github.com/robmcvey/cakephp-amazon-s3 のプラグインを使用しているのですが、

Error: Call to a member function put() on null  
File: /var/www/html/cakephp-2.6.4/app/Controller/UploadsController.php  
Line: 25

という、エラーが発生しています。 $AmazonS3->put('/*****/files/'); の部分です。
Readmeの通りに記述しましたがうまくいかないのですが、記述の仕方がまちがっているのでしょうか?
よろしくお願いいたします。

   public function add() {
            if ($this->request->is('post')) {

                    $tmp = $this->request->data['Upload']['file']['tmp_name'];
                    if(is_uploaded_file($tmp)) {
                            $filename = basename($this->request->data['Upload']['file']['name']);
                            $file = WWW_ROOT.'files'.DS.$filename;

                            // S3にファイル保存
                            $AmazonS3->put('/*****/files/');  // *****はパケット名、filesは作成したフォルダ

                            if (move_uploaded_file($tmp, $file)) {
                                    $this->Upload->create();
                                    $this->request->data['Upload']['filename'] = $filename;
                                    if ($this->Upload->saveAll($this->request->data)) {
                                            $this->Session->setFlash(__('アップロードしました。'));
                                            $this->redirect(array('action' => 'index'));
                                    } else {
                                            $this->Session->setFlash(__('アップロードできませんでした。'));

解決

$AmazonS3が作成されていません。

READMEをもう一度よく読んでみましょう。

App::uses('AmazonS3', 'AmazonS3.Lib');
$AmazonS3 = new AmazonS3(array('{access key}', '{secret key}', '{bucket name}'));

とあるはずです。

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *