AWSのS3にCakePHP2でファイルアップロードをしたのですがうまくいきません。
受付中
回答 1
投稿
- 評価
- クリップ 0
- VIEW 760

退会済みユーザー
以下のように記述したのですが、アップロードされません。
どこで違うのかご指摘いただけたら助かります。
よろしくお願いいたします。
app/Config/bootstrap.php
CakePlugin::load('AmazonWebServices');
app/Config/database.php
class DATABASE_CONFIG {
//...
public $s3 = array(
'datasource' => 'AmazonWebServices.S3',
'bucket_name' => '',
'key' => '',
'secret' => '',
'default_cache_config' => '',
'certificate_authority' => false
);
}
<?php
class Uploads extends AppModel {
public $name = 'Uploads';
public $useDbConfig = 's3';
}
Controller
public function add() {
// ユーザー情報の取得と挿入
$user = $this->Auth->user('username');
$user = AuthComponent::user('username');
$this->set("user",$user);
$this->request->data['Upload']['user_id'] = $this->Auth->user('id');
$this->request->data['Upload']['username'] = $this->Auth->user('username');
$upload = $this->request->data['Upload'];
if (isset($uplaod['file']['tmp_name'])) {
$tmpfile = $upload['file']['tmp_name'];
$filename = $upload['file']['name'];
// S3にputする
$result = $this->Upload->putFile($upload['file']['tmp_name'], $filename);
if ($result) {
$this->Session->setFlash("${result}にファイルを保存しました");
} else {
$this->Session->setFlash("ファイルの保存に失敗しました");
}
}
$this->render('index');
}
<?php echo $this->Form->create('Upload', array('action' => 'add', 'type' => 'file')); ?>
<?php echo $this->Form->file('file', array('type' => 'file')); ?>
<?php echo $this->Form->submit('アップロード'); ?>
<?php echo $this->Form->end() ?>
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
質問への追記・修正、ベストアンサー選択の依頼
dev1x_org
2015/05/31 01:51
変数$s3の'bucket_name'、'key'、'secret'が空なのは質問のために空にしたのか、それとも実際のコードでも空なのか教えてください。
退会済みユーザー
2015/05/31 01:52
すみません、質問のためわざと空にしました。
dev1x_org
2015/05/31 02:00
$this->Uploadに何が入っているかを教えてください。そこにアップロードの処理がありそうなので。
退会済みユーザー
2015/05/31 02:04
CREATE TABLE `uploads` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(11) unsigned NOT NULL,
`username` varchar(50) NOT NULL,
`name` varchar(50) NOT NULL,
`subject` varchar(64) NOT NULL,
`body` varchar(255) NOT NULL,
`qoute` varchar(255) NOT NULL,
`filename` text NOT NULL,
`upload_dir` varchar(255) DEFAULT NULL,
`file_name` varchar(100) NOT NULL,
`type` text NOT NULL,
`contents` mediumblob NOT NULL,
`extention` varchar(10) default null,
`size` int(11) default null,
`download_count` int(10) default null,
`created` datetime NOT NULL,
`modified` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=outfit;
質問の回答になっているかわかりませんが、お願いいたします。
dev1x_org
2015/05/31 11:00
ごめんなさい、質問の仕方が悪かったですね。$this->Uploadに入っているのは何かのクラスのインスタンスだと思うのですが、そのクラスを教えてくださいという意味でした。