2011-07-29 89 views
1

解決 我有一個網頁名爲additional_photos[]文件域,可以有不同的ID,但同一個名字,當然這一領域的情況下,n個。在一個正常的PHP代碼中,我會在$_FILES['additional_photos']上執行foreach,並且會很輕鬆地休息。但是我如何實現與CodeIgniter相同?我試着這樣做:上傳多個文件

 $additional_photosCount = count($_FILES['additional_photos']['name']); //Is there a better way to refer $_FILES like I can refere $_POST in CI? 
     for($i=0; $i< $additional_photosCount; $i++){ 
      $uploadConfig['file_name'] = $this->properties['userId'].'-'.$_FILES['additional_photos']['name'][$i]; 
      $this->CI->upload->initialize($uploadConfig); 
      if(!$this->CI->upload->do_upload('additional_photos['.$i.']')){; 
       echo $this->CI->upload->display_errors(); 
      } 
     } 

但對此,
一)恕我直言,是不正確的方式
二)給我的錯誤「您沒有選擇要上傳的文件。」
更新
這是一條出路,我可以申請:

HTML5
 $additional_photosCount = count($_FILES['additional_photos']['name']); 
     for($i=0; $i< $additional_photosCount; $i++){ 
      $uploadConfig['file_name'] = $this->properties['userId'].'-'.$_FILES['additional_photos']['name'][$i]; 
      $this->CI->upload->initialize($uploadConfig); 
      $_FILES['additional_photos_'.$i] = array(
       'tmp_name'=> $_FILES['additional_photos']['tmp_name'][$i], 
       'name'=> $_FILES['additional_photos']['name'][$i], 
       'type'=> $_FILES['additional_photos']['type'][$i], 
       'size'=> $_FILES['additional_photos']['size'][$i], 
       'error'=> $_FILES['additional_photos']['error'][$i], 
      ); 
      if(!$this->CI->upload->do_upload('additional_photos_'.$i)){; 
       echo $this->CI->upload->display_errors();//TODO: instead of echoing push errors to a list 
      } 
     } 

回答

0

如果你想要讓用戶選擇多個文件,只需使用您可以使用此功能

輸入元素的多重屬性:

<input type="file" id="input" multiple onchange="handleFiles(this.files)"> 

REFERENCE

+0

我更關心服務器端處理。我沒有使用HTML5,但即使在HTML5的情況下,如果您有單個元素名稱(不是ID)的文件輸入,您將如何處理服務器端的多個文件,請查看http://codeigniter.com/user_guide/libraries/ file_uploading.html – Kumar

1

選中此項:https://github.com/nicdev/CodeIgniter-Multiple-File-Upload,應該做上面你想要的。

+0

toopay,謝謝你的提示,我正在看擴展,但一開始看它似乎會幫助我,我還需要執行一些額外的操作,注意到文件名和大小調整,所以它可能沒有幫助我,但仍然感謝 – Kumar

+0

您可以輕鬆地擴展甚至更改該類,並添加一個函數來執行您所需的操作。 – toopay

+0

是的,這就是我可能做的... – Kumar