php文件上傳處理流程及多文件上傳的思路

1,判斷文件是否爲空 empty($_FILES[表單名][name])php

2,判斷文件上傳是否成功 $_FILES[表單名][error]數組

3,判斷文件上傳類型$_FILES[表單名][type]函數

4,判斷文件是否是上傳文件,is_uploaded_filecode

5,移動上傳的文件,move_uploaded_fileorm

6,若是寫成方法,須要返回文件路徑文件上傳


多文件上傳string

1,過濾空值array_filter()it

2,循環上傳io

/**
 * 文件上傳處理函數
 * @param array $upfile 上傳文件信息數組,如:$_FILES['pic'];
 * @param string $path 上傳文件的存儲目錄路徑
 * @param array $typelist 容許上傳的文件類型,默認爲array()則表示不限制類型
 *		如:array("image/jpeg","image/gif","image/png"); //定義容許的上傳文件類型
 * @param int $maxsize 容許上傳文件的大小,默認爲0表示不限制。
 * @return array 返回值爲兩個單元的數組,
 *			第一個單元下標爲error:true表示成功,false表示失敗
 *			第二個單元下標爲info:上傳成功表示文件名,上傳失敗表示失敗緣由
 */
function uploadFile($upfile,$path,$typelist=array(),$maxsize=0){
	//1.定義一些變量:
                    $path=$path.'/'.date('Ymd').'/';
                    if(!is_dir($path)){
                        mkdir($path,0777,true);
                    }
	$path=rtrim($path,"/")."/"; //處理一下上傳目錄
	$res=array("error"=>false,"info"=>""); //定義返回值
	//2.判斷上傳文件錯誤
	if($upfile['error']>0){
		switch($upfile['error']){
			case 1: $info="上傳文件大小超過了php.ini中配置"; break;
			case 2: $info="上傳文件大小超過form表單中MAX_FILE_SIZE的設置"; break;
			case 3: $info="文件只有部分被上傳"; break;
			case 4: $info="沒有文件被上傳"; break;
			case 6: $info="找不到臨時文件夾"; break;
			case 7: $info="文件寫入失敗"; break;
			default: $info="未知錯誤!"; break;
		}
		$res['info']=$info;
		return $res;
	}

	//3.判斷上傳文件類型
	if(count($typelist)>0 && !in_array($upfile['type'],$typelist)){
		$res['info']="上傳文件類型錯誤!當前文件類型:".$upfile['type'];
		return $res;
	}

	//4.判斷上傳文件大小
	if($maxsize>0 && $upfile['size']>$maxsize){
		$res['info']="上傳文件大小超出{$maxsize}";
		return $res;
	}

	//5.上傳文件的名稱處理(防止名字重複)
	$ext = pathinfo($upfile['name'],PATHINFO_EXTENSION);//獲取文件的後綴名
	do{
		$newfile = time().rand(1000,9999).".".$ext;  //隨機一個文件名
	}while(file_exists($path.$newfile)); //判斷是否存在

	//6.執行文件上傳。
  //判斷臨時目錄的的文件是不是有效的上傳文件
	if(is_uploaded_file($upfile['tmp_name'])){
    // 這個就相似於copy函數
		if(move_uploaded_file($upfile['tmp_name'],$path.$newfile)){
      
			$res['error']=true;
			$res['info']=$newfile;
		}else{
			$res['info']="移動上傳文件錯誤!";
		}
	}else{
		$res['info']="不是有效的上傳文件!";
	}
	return $res;
}

文件上傳方法function

$arr=uploadFile($_FILES['file'],'./upload');
var_dump($arr);

上傳方法調用

調用成功後,會在upload文件夾下建立以年月日爲目錄名的文件夾,並將文件進行上傳

相關文章
相關標籤/搜索