CakePHP 2.0文件上传,$ data无效

时间:2012-03-01 11:52:35

标签: mysql cakephp-2.0

我在一个网站上工作,这将使我能够将文件上传到服务器,我试图将文件重命名为与信息一起插入的相应mysql ID。

它有点工作,但每次上传文件时,它都会重新写入上传的最后一个文件。

这是我的代码

   function uploadFile() {
    $file = $this->data['Upload']['file'];
    $pid = mysql_insert_id();
    if ($file['error'] === UPLOAD_ERR_OK) {
        if (move_uploaded_file($file['tmp_name'], APP.'webroot/files/uploads'.DS."$pid.mp4")) {
            $this->data['Upload']['name'] = $file['name'];
            $this->data['Upload']['eventname'] = $file['evetname'];
            $this->data['Upload']['description'] = $file['description'];
            return true;
        }
    }
    return false;
}

这些是我网站上发生的错误,

注意(8):间接修改重载属性UploadsController :: $ data无效[APP / Controller / uploads_controller.php,第58行] 注意(8):未定义的索引:eventname [APP / Controller / uploads_controller.php,第59行] 注意(8):间接修改重载属性UploadsController :: $ data无效[APP / Controller / uploads_controller.php,第59行] 注意(8):未定义索引:说明[APP / Controller / uploads_controller.php,第60行] 注意(8):间接修改重载属性UploadsController :: $ data无效[APP / Controller / uploads_controller.php,第60行]

我真的不知道发生了什么? 我还应该使用mysqli_insert_id()函数而不是mysql_insert_id()吗?我真的不知道mysqli_insert_id()是如何工作的,任何帮助请大家好吗???

1 个答案:

答案 0 :(得分:6)

您正试图操纵在Cake 2.0中只读的$this->data。您应该使用Cake 2.0中引入的新CakeRequest对象。

因此$this->data变为:$this->request->data

对于mysql_insert_id(),我不确定将数据保存到数据库表的位置。 Cake将最后插入的记录的id存储在$this->ModelName->id中,因此您也可以使用它。