CakePHP $ _FILES为空

时间:2014-09-23 08:07:16

标签: php cakephp web upload

我正在尝试修改用CakePHP编写的新闻稿平台来制作附件。创建简报时,可以上传将作为附件添加的图像文件。但是,在表单提交(简报创建是表单)之后,$ _FILES变量为空。但是,文件的名称包含在POST数据中。

以下是HTML

的一些表单
<form action='/systeem/nieuwsbrieven/' method='POST'>

<tr>

    <td style='padding: 10px;'><textarea name='data[Nieuwsbrieven][omschrijving]' style='width: 100%;height: 150px;'></textarea></td>   

</tr>

<tr>

    <td style='padding: 10px;'><input type="file" id='fileupload' name="data[Nieuwsbrieven][attachment]"  style='width: 100%;height: 150px;'></td>  

</tr>

我添加了'数据[Nieuwsbrieven] [omschrijving]',因为这个位有效。以下是处理表单的函数:

function nieuwsbrieven() { 
    if (isset($this->data)) {
        echo 'DATA:';
        var_dump($this->data);
        echo 'FILES:';
        var_dump($_FILES);
        //echo $_FILES['data[Nieuwsbrieven][attachment]']['name']."<< THE NAME";
        exit();
    }
    else {

        echo "data bestaat niet";
    }

    if(!empty($this->data)) { 

        $this->data['Nieuwsbrieven']['datum'] = mktime();

        $datum = explode('-', $this->data['Nieuwsbrieven']['convert_datum']);           

        $this->data['Nieuwsbrieven']['plan_datum'] = mktime(0, 0, 0, $datum[1], $datum[0], $datum[2]);

        $this->Nieuwsbrieven->save($this->data);
        //$this->redirect("/systeem/verzenden/"); 

    }

}

如你所见,我var_dump $ this-&gt;数据和$ _FILES,这是输出:

DATA: array(1) { ["Nieuwsbrieven"]=> array(5) { ["content"]=> string(21) "
test content

" ["titel"]=> string(12) "test subject" ["convert_datum"]=> string(10) "25-09-2014"     ["omschrijving"]=> string(4) "test" ["attachment"]=> string(16) "137785222989.jpg" } } FILES: array(0) { }

这不是INI设置的问题,因为我尝试了一个带有vanilla PHP的测试脚本,并且能够正常上传文件。

3 个答案:

答案 0 :(得分:2)

一个更好的选择是使用cakephp的Form帮助器,你应该传递类型参数与文件而不是通常的帖子

  echo $this->Form->create('User', array('type' => 'file'));

请检查http://book.cakephp.org/2.0/en/core-libraries/helpers/form.html#options-for-create

答案 1 :(得分:1)

尝试使用以下表单声明表单:

<强> HTML

<form action='/systeem/nieuwsbrieven/' method='POST' enctype="multipart/form-data">

<强> CakePHP的

echo $this->Form->create('User', array('type' => 'file'));

答案 2 :(得分:0)

你错过了enctype ..

当您的表单包含任何元素时,请在表单标记中添加multipart / form-data。 喜欢 : <form action='/systeem/nieuwsbrieven/' method='POST' enctype="multipart/form-data">