解決 我有一個網頁名爲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();
}
}
但對此,
一)恕我直言,是不正確的方式
二)給我的錯誤「您沒有選擇要上傳的文件。」
更新
這是一條出路,我可以申請:
$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
}
}
我更關心服務器端處理。我沒有使用HTML5,但即使在HTML5的情況下,如果您有單個元素名稱(不是ID)的文件輸入,您將如何處理服務器端的多個文件,請查看http://codeigniter.com/user_guide/libraries/ file_uploading.html – Kumar