2013-04-17 160 views
3

我在手冊中看到很多關於創建表單上傳文件的問題和信息。我已經能夠設置一個表單來處理文件上傳。是否有任何基於Zend的代碼用於在文件下載後處理這些文件。ZF2處理文件上傳。如何訪問上傳的文件?

每個教程或手動參考似乎有類似的東西:

if ($form->isValid()) { 
    // 
    // ...Save the form... 
    // 
} 

我可以使用像move_uploaded_file的PHP函數,管理上載內容。我是否錯過了某些東西,或者Zend是否會回退到使用臨時文件名稱作爲其他代碼段中的數據片段?

回答

6

它是在手動

http://framework.zend.com/manual/2.1/en/modules/zend.form.file-upload.html

// File: MyController.php 

public function uploadFormAction() 
{ 
    $form = new UploadForm('upload-form'); 

    if ($this->getRequest()->isPost()) { 
     // Make certain to merge the files info! 
     $post = array_merge_recursive(
      $this->getRequest()->getPost()->toArray(), 
      $this->getRequest()->getFiles()->toArray() 
     ); 

     $form->setData($post); 
     if ($form->isValid()) { 
      $data = $form->getData(); 
      // Form is valid, save the form! 
      return $this->redirect()->toRoute('upload-form/success'); 
     } 
    } 

    return array('form' => $form); 
} 

一旦成功上載文件,$形式 - >的getData()將返回:

array(1) { 
    ["image-file"] => array(5) { 
     ["name"]  => string(11) "myimage.png" 
     ["type"]  => string(9) "image/png" 
     ["tmp_name"] => string(22) "/private/tmp/phpgRXd58" 
     ["error"] => int(0) 
     ["size"]  => int(14908679) 
    } 
} 

使用數組你得到了什麼$form->getData()來處理上傳的文件。

您還可以設置目標並使用名爲過濾器的方法對其進行重命名。下面

Link都有,那該多好解釋:

http://framework.zend.com/manual/2.1/en/modules/zend.filter.file.rename-upload.html#zend-filter-file-rename-upload

希望這有助於。

+2

RenameUpload的鏈接是我一直在尋找的。我看到所有的手冊頁都有'// Form'是有效的,保存表格!',這個表格被讀爲'//這裏應該是你正在尋找的代碼!我編輯了答案突出顯示過濾和鏈接。 – Chris

+0

謝謝@Chris,爲了糾正我的帖子,它也幫助其他人也在尋找同樣的問題 –