上傳文件時,通常會爲該字段創建一個數組。例如,在其中該模型是文獻和現場的情況下是submittedfile:CakePHP:使用擴展數據陣列將文件字段保存到數據庫
$this->request->data['Document']['submittedfile'] = array(
'name' => 'conference_schedule.pdf',
'type' => 'application/pdf',
'tmp_name' => 'C:/WINDOWS/TEMP/php1EE.tmp',
'error' => 0,
'size' => 41737,
);
陣列不能被保存到DB,因爲該字段不能保存「submittedfile」陣列到DB '已提交文件'列。不過我只需要在提交文件字段DB的上述數組的名稱部分。嘗試了多種方法這裏有兩個:
開啓submittedfile從數組字符串在控制器方法調用控制器Methdod保存方法之前。
public function addDocument(){
$this->request->data['Document']['submittedfile'] = $this->request->data['Document']['submittedfile']['name'];
$this->Document->save($this->request->data);}
轉動submittedfile從陣列到串在beforeSave回調方法調用之前(問題不能使用CakePHP驗證用於檔案大小和uploadError時,因爲它們需要[「tmp_name的值」]工作。)在控制器方法中保存方法。 (問題是,我得到錯誤非法串偏移「名」)
public function beforeSave($options = array()){
$this->data['Document']['submittedfile'] = $this->data['Document']['submittedfile']['name'];}
任何保存上傳的文件類型數組到DB的答案?
我正在使用調試,因爲你建議發現它給了以下內容。 – DaGambit
我沒有看到代碼 – cornelb
我按照你的建議使用了調試,但它給了我陣列結構。它表明使用'$ this-> data ['Document'] ['submittedfile'] ['name']'應該返回正確的值。因爲如果我回顯'$ this-> data ['Document'] ['submittedfile'] ['name'],這個問題似乎與'$ this-> data ['Document'] ['submittedfile']' ]該值顯示沒有**非法偏移錯誤**。特德發現它給了以下內容。 – DaGambit