cakephp2でアップロードした画像の表示
チュートリアルで作ったようなブログに画像アップロード機能を実装しようとしています。
入力フォームに画像アップロードのフォームは作りました。
それを次の確認画面で表示させたいのですが、なぜか表示されません(chromeなのですが絵文字のようなマークでしか出ません)。
今考えている方法は、
■記事投稿画面のController
1.postされたらsessionに記入
2.$_file
のtmp_name
を取得
3.tempnam()
でapp/webroot
下のimgフォルダ内に一時ファイルを作成
4.move_uploaded_file()
でアップロードした画像を、作成した一時ファイルに移す
5.作成した一時ファイルのディレクトリをsessionに記入
■確認画面のController
6.session から$_file
のnameと一時ファイルのディレクトリを取得
7.$this->set
してview画面で使えるようにする
■確認画面のView
8.html->image
で取得
こんな感じにすればできるのではないかと考えたのですが、
3のimg下にディレクトリを作ることがなぜかできません。/tmp下になって出てきてしまいます。
権限は777にしてありますが、ほかにどんな原因があるのでしょう。
またよりよい方法があれば教えていただきたいです。
(勉強を兼ねているのでpluginはできるだけ使わない方針で)
追加:contorllerのソースはこんな感じです。
> public function add() {
if ($this->request->is('post')) {
$this->Post->set($this->request->data);
if($this->Post->validates()){
$this->request->data['Post']['user_id'] = $this->Auth->user('id');
$this->Session->write('Session',$this->request->data);
if(isset($this->request->data['Post']['image'])){
$file_name = $this->request->data('Post.image.tmp_name');
$tmpfile = tempnam("/var/www/html/share/cake/cakephp-2.6.7/app/webroot/img/tmp","xxx");
$this->Session->write('Session.xxx',$tmpfile);
if(move_uploaded_file($file_name,$tmpfile)){
return $this->redirect(array('action'=>'confirm'));
}else{ $this->Session->setFlash(__('ファイルをtmpに保存できませんでした。'));}
}
}
}
}
public function confirm() {
if ($this->Session->check('Session')) {
$title = $this->Session->read('Session.Post.title');
$body = $this->Session->read('Session.Post.body');
//画像処理
$file_name = $this->Session->read('Session.Post.image.name');
if(isset($file_name)){
//move_uploaded_file($file_name,$tmpfile);
$image = $this->Session->read('Session.xxx');
//mkdir($image,0777);
$this->set('image',$image);
}
$this->set('title',$title);
$this->set('body',$body);