2013-01-11 81 views
1

我在PyroCMS論壇上發佈了這個帖子,希望能夠幫助更多的讀者尋求幫助,因爲我似乎無法理解它。努力使用PyroCMS文件庫上傳多個文件

當我嘗試使用PyroCMS Files庫上傳多個文件時,我遇到了問題。我可以在調用庫時單獨上傳文件,也可以在繞過庫並通過move_uploaded_file進行測試時獲取要上傳的文件。我在我的控制器中創建了以下(稍微精簡)的代碼:

public function upload($id) 
{ 
    // Folder selected or redirect 
    $id or redirect('admin/mis/resources'); 

    // Run on validation 
    if ($_FILES) 
    { 
     if (count($_FILES['userfile']['name'] > 0)) 
     {     
      foreach ($_FILES['userfile']['name'] as $file) 
      {      
       $upload = Files::upload($id, $file); 
      } 
     }         

     redirect('admin/vle/resources/contents/'.$id);    
    } 

    $this->template->build('admin/resources/upload'); 
} 

但是,當運行此代碼時,不會上傳任何文件。如果我輸出的上傳我得到以下信息:

陣列([狀態] => [消息] =>

您沒有選擇要上傳的文件

我看來,我不能爲。我生活的方式是如何將多個文件傳遞給Files :: upload,我確定我錯過了一些東西,但這並不是說我不能一般地上傳文件,因爲如果我將代碼更改爲本地進行測試我的文件上傳就好了:

if($_FILES) 
{ 
    if(count($_FILES['userfile']['name'])) 
    { 
     foreach ($_FILES['userfile']['name'] as $file) 
     { 
      $img = "c:/wamp/www/testupload/files/".$file; 

      move_uploaded_file($_FILES['userfile']['tmp_name'][$i], $img); 
     } 
    } 
} 

上傳文件庫的方法在這裏https://github.com/pyrocms/pyrocms/blob/2.2/develop/system/cms/modules/files/libraries/Files.php#L333

我已經嘗試了很多不同的事情,我的頭在旋轉一點,現在試圖掌握這一點。所以,如果任何人都可以幫助它將不勝感激。

回答

3

該文件庫目前不支持一個元素上傳的多個文件。所以它試圖從「userfile」文件輸入中找到一個文件,而不是一組文件。

這應該工作:PyroCMS的

<form method="post" action="/upload/1" enctype="multipart/form-data"> 
    <input name="userfile" type="file"/> 
    <input name="secondfile" type="file"/> 
</form 

public function upload($folder_id) 
{ 
    $upload = Files::upload($folder_id, 'Descriptive Name', 'userfile'); 
    $second_upload = Files::upload($folder_id, 'Some Name', 'secondfile'); 
} 

管理面板使用jQuery的BlueImp上傳上傳多個文件。也許像這樣的JS解決方案會適合你?這樣用戶可以獲得進度條,通知他們每個上傳的狀態,並可以看到每次上傳完成的時間。

+0

使用BlueImp對它進行了排序。謝謝你指點我在正確的方向Jerel。 – Mark

+0

這很傷心,我很害怕。 :( 您是否確認不能使用相同的名稱: '' –