3

私は CakePHP プロジェクトに取り組んでいます。ここでは、ファイルをアップロードしてから、そのファイルを特定のフォルダーに移動する必要があります。アップロードはうまくいきますが、目的のフォルダに移動できません。アップロードされたファイルを移動するための機能または CakePHP の何かがありますか?

現在、PHP のコア関数を使用していますmove_uploaded_file()。この関数は、 ではなく、ソースと宛先の両方の絶対パスを必要とhttp://localhost/....します。試してみましたが、うまくいきませんでした。Base Directory/Absolute Pathでは、アプリケーションの を取得する方法を知っていますか? これは次のようになりますC://wamp/www/project_folder/......

4

3 に答える 3

3

コントローラーに関数を追加する

public function add() {
    $this->Model->create();
    if ($this->request->is('post')) {
        if(!empty($this->data['Model']['image']['name']))
        {
        $file=$this->data['Model']['image'];
        $ary_ext=array('jpg','jpeg','gif','png');
        $ext = substr(strtolower(strrchr($file['name'], '.')), 1); //get the extension
            if(in_array($ext, $ary_ext))
            {
                move_uploaded_file($file['tmp_name'], WWW_ROOT . 'img/uploads/posts/' . $file['name']);
                $this->request->data['Model']['image'] = $file['name'];
            }   
        }
        if ($this->Model->save($this->request->data)) 
        {
            $this->Session->setFlash('Your record has been saved.');
            $this->redirect(array('action' => 'index'));
        }
        else 
        {
            $this->Session->setFlash('Unable to add your record.');
        }
    }
}


File control in add.ctp file

echo $this->Form->input('image',array('type'=>'file'));


you can define constant in index.php file like below
/**
 *  Get Cake's root directory
 */
define('APP_DIR', 'app');
define('DS', DIRECTORY_SEPARATOR);
define('ROOT', dirname(__FILE__));
define('WEBROOT_DIR', 'webroot');
define('WWW_ROOT', ROOT . DS . APP_DIR . DS . WEBROOT_DIR . DS);
于 2013-08-06T09:55:25.400 に答える
2

Cake が生成する (またはあなたに渡す) 定数は、グローバル定数と関数に記載されています。

Cake のグローバルを使用するのAPPが良いようです (フォルダー内のファイルを移動したくない場合を除きAPP/ます)。

于 2013-08-05T17:10:31.987 に答える
1

PHP 関数getcwd()を使用して、アプリのベース ディレクトリを取得できます。

于 2013-08-05T17:41:22.523 に答える