這一節(jié)內(nèi)容主要介紹PHP上傳文件的多文件上傳功能。
只要以數(shù)組形式來(lái)命名表單中的文件上傳標(biāo)記,即可實(shí)現(xiàn)多個(gè)文件同時(shí)上傳。
下面我們來(lái)看一個(gè)例子:
---------------------------------------------------------------------
??? function upload($file_error, $file_tmp_name, $file_name){
??????? $info = "";
??????? if($file_name == "")
??????????? return $info;
??????? switch($file_error){
??????????? case UPLOAD_ERR_INI_SIZE:
??????????????? $info = $file_name. ": 文件大小超過(guò)了服務(wù)器的限制";
??????????????? break;
??????????? case UPLOAD_ERR_FORM_SIZE:
??????????????? $info = $file_name. ": 文件大小超過(guò)了瀏覽器的限制";
??????????????? break;
??????????? case UPLOAD_ERR_PARTIAL:
??????????????? $info = $file_name. ": 只上傳了部分文件";
??????????????? break;
??????????? case UPLOAD_ERR_NO_FILE:
??????????????? $info = $file_name. ": 沒(méi)有文件被上傳";
??????????????? break;
??????????? case UPLOAD_ERR_NO_TMP_DIR:
??????????????? $info = $file_name. ": 找不到臨時(shí)文件夾";
??????????????? break;
??????????? case UPLOAD_ERR_CANT_WRITE:
??????????????? $info = $file_name. ": 文件寫(xiě)入失敗";
??????????????? break;
??????????? case UPLOAD_ERR_OK:
??????????????? $upload_dir = './'.iconv("UTF-8","gb2312",$file_name);
??????????????? if(file_exists($upload_dir)){
??????????????????? $info = $file_name.": 同名文件已經(jīng)存在";
??????????????? }else{
??????????????????? if(move_uploaded_file($file_tmp_name,$upload_dir)){
??????????????????????? $info = $file_name.": 文件上傳成功";
??????????????????? }else{
??????????????????????? $info = $file_name.": 文件上傳失敗";
??????????????????? }
??????????????? }
??????????????? break;
??????? }
??????? return $info;
??? }
??? if(isset($_POST['submit'])){
??????? $info = '';
??????? $count = count($_FILES['upload_file']['name']);
??????? for($i=0; $i ??????????? if($_FILES['upload_file']['name'][$i] == "")
??????????????? continue;
??????????? $info = upload(
??????????????? $_FILES['upload_file']['error'][$i],
??????????????? $_FILES['upload_file']['tmp_name'][$i],
??????????????? $_FILES['upload_file']['name'][$i]
??????????? );
??????? }
??????? echo $info;
??? }
?>
--------------------------------------------------------------------------------------
代碼執(zhí)行結(jié)果如下:
注意:
1、
中, name="upload_file[]"一定要以數(shù)組形式命名,不然就會(huì)出現(xiàn)錯(cuò)誤:?? ?“Uninitialized string offset: 0”,這句話(huà)的意思是你的數(shù)組key值越界了
2、$_FILES['upload_file']['name'][$i]中, upload_file是表單中上傳文件標(biāo)記符的名稱(chēng),多文件上傳時(shí),數(shù)組$_FILES的第三維下標(biāo)會(huì)自動(dòng)從0開(kāi)始依次編號(hào)。