cakePHP的文件上传问题

时间:2009-08-07 20:24:29

标签: cakephp file-upload

我正在尝试使用cakePHP上传文件。这是观点:

echo $form->create(null, array('action' => 'upload', 'type' => 'file'));
echo $form->file('img');
echo $form->submit('Enviar Imagem');
echo $form->end();

这就是我得到的错误:

  

警告(2):为foreach()提供的参数无效[CORE / cake / dispatcher.php,第314行]

编辑: cakePHP的调试告诉我这些是发生问题的代码行:

foreach ($_FILES['data'] as $key => $data) {
    foreach ($data as $model => $fields) {
        foreach ($fields as $field => $value) {

这是调用堆栈:

Dispatcher::parseParams() - CORE/cake/dispatcher.php, line 314
Dispatcher::dispatch() - CORE/cake/dispatcher.php, line 118
[main] - APP/webroot/index.php, line 88

我的上传功能目前为空。发生了什么事?

3 个答案:

答案 0 :(得分:2)

Dispatcher似乎期望在检查上传数据时存在模型名称。我不知道这是否有充分的理由,或者只是一个疏忽。无论如何,只需使用一个组成的模型名称,没关系。它将通过创建它期望的数据结构来满足Dispatcher。

echo $form->create('File', array(
    'url'  => array('controller' => 'myController', 'action' => 'upload'),
    'type' => 'file'
));

答案 1 :(得分:0)

上传文件时,蛋糕nukes $ _POST并将所有内容放入

$this->params['form'] 

阵列。 在您的上传视图/控制器中对$ this-> params执行var_dump,它应该在那里

答案 2 :(得分:0)

/app/views/images/upload.ctp

echo $form->create('Image', array('action' => 'upload', 'type' => 'file'));
echo $form->file('img');
echo $form->submit('Enviar Imagem');
echo $form->end();

/app/controllers/images_controller.php

function upload(){
  if(!empty($this->data)){
    pr($this->data);
  }
}

你会发现很多有趣的东西: - )