2009-08-07 114 views
1

我試圖用cakePHP上傳一個文件。這是視圖: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 /蛋糕/ 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 

我的上傳功能目前是空的。發生什麼事?

+1

看起來像你需要明確在$模式存在。嘗試將其與模型關聯。 – helloandre 2009-08-11 02:48:03

回答

2

看起來Dispatcher希望在檢查上傳數據時存在型號名稱。我不知道是否有充足的理由或者只是疏忽。無論如何,只需使用製作好的模型名稱即可,無關緊要。它將通過創建它期望的數據結構來滿足Dispatcher。

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

試圖明確添加控制器,因爲此表單沒有關聯的模型。但問題依然如故。我將調試級別更改爲3,似乎上述foreach正在處理來自文件字段的數據。我會用更多的信息更新這個問題。 – 2009-08-11 02:36:56

+0

看起來,您可以創建沒有模型的表單,但調度員在檢查文件字段時碰巧預期了模型名稱。看起來像內部不一致。沒關係,只需添加任何組成型號名稱。 – deceze 2009-08-11 02:56:30

0

當上傳文件蛋糕核武器$ _ POST,並把一切都變成

$this->params['form'] 

陣列。 做$這個 - > PARAMS一中的var_dump上傳視圖/控制器,它應該是有

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

你會發現很多有趣的:-)的