##やりたいこと
CakePHP2でファイルアップロードをしたい.
ただしアップロード時に任意のディレクトリにファイルをアップロードしたい.
Controller側(フォームからアップされたファイルを受け取り,保存)
今からアップロードする場合に,webroot以下のディレクトリをどう選べば良いのか?
以下のように,フォームから画像を受け取る場合:
script.php
if (move_uploaded_file($this->request->data['File']['file']['tmp_name'], 'test.jpg')) {
$this->Flash->set('ファイルアップロードができました.');
} else {
$this->Flash->set('ファイルアップロードが失敗しました.');
}
これが正しく実行されると,webrootの直下にtest.jpgがされます.
つまり任意のディレクトリにアップロードしたければ,以下のように,ファイルの名の前にディレクトリ名をつければよい.
script.php
if (move_uploaded_file($this->request->data['File']['file']['tmp_name'], 'foo/test.jpg')) {
$this->Flash->set('ファイルアップロードができました.');
} else {
$this->Flash->set('ファイルアップロードが失敗しました.');
}
View側(アップロードしたものを表示する)
いろいろしらべた結果,view側の処理はこれでよい.
もちろんこれは,すでにあるファイルを表示するだけの場合.
script.php
echo $this->Html->image('/foo/test.jpg', array('alt' => 'baz'));
// fooディレクトリのtest.jpgファイルを表示(画像ファイルとして)
参考
http://www.sigesaba.com/2013/06/override-img-dir-in-cakephp.php
公式:http://book.cakephp.org/2.0/en/core-libraries/helpers/html.html#HtmlHelper::script