溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

優(yōu)化后的單文件上傳函數(shù)

發(fā)布時間:2020-05-22 17:31:11 來源:網(wǎng)絡(luò) 閱讀:608 作者:jaty0817 欄目:web開發(fā)
$fileInfo = @$_FILES ['myFile'];//接收表單上傳的文件
//5個參數(shù)中,第一個是必須,后面都有默認(rèn)值
upload($fileInfo,"626800",false,"imgs",array("txt"));

function upload($fileInfo,$maxSize=2097152,$flag=true,$path="upload",$allowedExt=array("jpeg","jpg","png","gif")) {
	//$maxSize = 2 * 1024 * 1024; // 上傳文件大小限制在2M內(nèi)
	//$flag = true;	
	// 判斷錯誤號
	if ($fileInfo ['error'] > 0) {
		switch ($fileInfo ['error']) {
			case 1 :
				$mes = '上傳文件超過了PHP配置文件中upload_max_filesize選項的值';
				break;
			case 2 :
				$mes = '上傳文件超過了表單MAX_FILE_SIZE限制的大小';
				break;
			case 3 :
				$mes = '文件部分被上傳';
				break;
			case 4 :
				$mes = '沒有選擇要上傳的文件';
				break;
			case 6 :
				$mes = '沒有找到臨時目錄';
				break;
			case 7 :
			case 8 :
				$mes = '系統(tǒng)錯誤';
				break;
		}
		exit ( $mes );
	}
	// 判斷文件類型
	// $ext=strtolower(end(explode(".", $fileInfo['name']))); //得到后綴名,或者用下面的方法
	$ext = pathinfo ( $fileInfo ['name'], PATHINFO_EXTENSION );
// 	$allowedExt = array (
// 			"jpeg",
// 			"jpg",
// 			"png",
// 			"gif" 
// 	);
	//
	if(!is_array($allowedExt)){
		exit("文件擴(kuò)展名不是數(shù)組");
	}
	if (! in_array ( $ext, $allowedExt )) {
		exit ( "非法文件類型" );
	}
	// print_r(getp_w_picpathsize($fileInfo['tmp_name']));exit;
	// 判斷是否是真實的圖片文件類型,如果不需要做此檢測可以設(shè)定$flag為false
	if ($flag) {
		if (! getp_w_picpathsize ( $fileInfo ['tmp_name'] )) {
			exit ( "上傳文件不是真實的圖片文件" );
		}
	}
	// 判斷文件大小
	if ($fileInfo ['size'] > $maxSize) {
		exit ( "上傳文件大小超過本站限制" );
	}
	// 是否是通過POST方式上傳,需要檢測的是臨時文件
	// var_dump(is_uploaded_file($fileInfo['tmp_name']));exit;
	if (! is_uploaded_file ( $fileInfo ['tmp_name'] )) {
		exit ( "非法上傳方式" );
	}
	// 檢測完畢后移動文件
	//$path = "upload";
	if (! file_exists ( $path )) {
		mkdir ( $path, 0755, true );
		chmod ( $path, 0755 );
	}
	$uniqName=md5 ( uniqid ( microtime ( true ), true ) ) . "." . $ext;
	$destination = $path . "/" . $uniqName;
	if (! @move_uploaded_file ( $fileInfo ['tmp_name'], $destination )) {
		// 加上@ 是為了不顯示溢出錯誤
		exit ( "文件上傳失敗" );
	}
	
	echo "文件上傳成功!";
}


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI