2009-08-17 41 views
3

我一直在調查這一段時間,不知道它。基本上我爲我的模型添加了一個頁面,您可以從URL或文件上傳中添加地圖。我已經獲得了所有的字段和驗證,但我如何以及在哪裏管理上傳的文件?必須有一些簡單的方法來做到這一點。謝謝!如何在CakePHP中執行基於表單的文件上傳?

回答

19

首先,您的表單需要設置爲允許上傳文件。

<?php echo $form->create(Model, array('type' => 'file')); ?> 

這將允許任何文件輸入到實際文件上傳到你的服務器$form->file(field)$form->input(field, array('type' => 'file'))

一旦該文件已被上傳你應該處理一切從型號中:

function beforeSave($created) { 
    extract($this->data[Model][field]); 
    if ($size && !$error) { 
     move_uploaded_file($tmp_name, destination); 
     $this->data[Model][field] = destination; 
    } 
    return true; 
} 

這些只是基礎,所以一定要周圍有一齣戲,找到最適合您需求的解決方案。

+0

那個函數名應該是「move_uploaded_file」:) – inkedmn 2009-08-18 12:38:29

+0

啊謝謝,它已經更新了。 textarea不檢查我的語法。 ;) – 2009-08-18 13:15:30

+0

這是我如何做move_uploaded_file函數:move_uploaded_file($ _ FILES ['data'] ['tmp_name'] ['Item'] ['ipath'],「$ destination /".$_ FILES ['data'] [ '名稱'] [ '項目'] [ 'IPATH']); – 2011-09-17 10:04:19

0

注意: MeioUploadBehavior已被棄用。相反jrbasso建議Upload Plugin

除了已經給出的優良答案之外,我想提示MeioUploadBehavior,目前由jrbasso at github維護,這對我自己的CakePHP項目幫助很大。

您只需使用$actsAs字段將行爲添加到模型中,同時指定任何自定義首選項。然後在您的數據庫中創建必要的字段(由提供的文檔詳細描述),或將模型配置爲不使用任何數據庫表。最後在添加頁面中設置表單,也在隨附的文檔中進行描述。這個行爲將會爲你休息。

0

您可以使用Zend組件來處理文件上傳。在我的網站上有一個很好的例子: CakePHP file upload using Zend Components

+0

你好Geo。我對你的博客文章發表了評論。請提及您在示例中使用的CakePHP版本。謝謝。 – 2014-12-05 05:31:06

相關問題