获取CakePHP中的基目录

时间:2013-08-05 17:05:32

标签: cakephp absolute-path base-path

我正在开发一个CakePHP项目。在这里,我必须上传文件,然后将该文件移动到特定文件夹。上传工作正常,但我无法将其移动到我想要的文件夹。 CakePHP中是否有任何函数或内容来移动上传的文件?

目前我正在使用PHP的核心功能move_uploaded_file()。此功能需要源和输出的绝对路径。目的地,而不是http://localhost/....,我试过了,但它没有用。那么,你知道如何获得我的申请Base Directory/Absolute Path吗?这就像:C://wamp/www/project_folder/......

3 个答案:

答案 0 :(得分:3)

在Controller中添加功能

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);

答案 1 :(得分:2)

Global Constants and Functions中记录了Cake生成的常量(或让你结束......)。

使用Cake的全局APP似乎是可行的方法(除非您不想移动APP/文件夹中的文件)。

答案 2 :(得分:1)

您可以使用php函数getcwd()来获取应用的基本目录。