58、PHP将上传到临时文件夹的文件移动到服务器指定文件夹内

阅读() @2018-10-29 18:16:08

本节用到的文件操作函数:

1、is_uploaded_file() 函数判断指定的文件是否是通过 HTTP POST 上传的。

2、move_uploaded_file() 函数将上传的文件移动到新位置。

代码如下:

html部分:

<form action="test.php" method="post" enctype="multipart/form-data">
	<input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
	<input type="file" name="file" value="" />
	<input type="submit" value="上传文件" />
</form>

php部分:

if(!empty($_FILES['file']['name'])){
	//判断文件是否上传成功
	if($_FILES['file']['error']>0){
		switch($_FILES['file']['error']){
			case 1:
				$promptMsg = '文件大小超过php.ini限制';
				break;
			case 2:
				$promptMsg = '文件大小超过前台表单设定的大小';
				break;
			case 3:
				$promptMsg = '只上传了文件的一部分';
				break;
			case 4:
				$promptMsg = '没有上传任何文件';
				break;
		}
		echo '
			<div style="width:500px;height:100px;border:1px solid #f00;color:#f00">
				<div style="width:500px;height:50px;border-bottom:3px solid #000;color:#000;font-weight:bold">
					友情提示:
				</div>
				'.$promptMsg.'
			</div>
		';
		exit();
	}else{
		//判断上传文件的类型
		$upFileType = array('.jpg','.png','.gif','.bmp');
		$fileType = strtolower(strrchr($_FILES['file']['name'],'.'));
		if(!in_array($fileType,$upFileType)){
			echo '<script type="text/javascript">
				alert("仅限上传图片文件");history.go(-1);
			</script>';
			exit();
		}
		//将上传文件移动到服务器指定文件夹内
		$dirName = 'upload/'.date('ymd');
		if(!is_dir($dirName)){
			mkdir($dirName,0777,1);
		}
		if(is_uploaded_file($_FILES['file']['tmp_name'])){
			//为防止重名,给上传的文件添加时间戳和10-300之间的随机数
			$toFileName = $dirName.'/'.time().'_'.mt_rand(10,300).$_FILES['file']['name'];
			if(move_uploaded_file($_FILES['file']['tmp_name'],$toFileName)){
				echo '<script type="text/javascript">
					alert("文件上传并移动成功");
					history.go(-1);
				</script>';
			}else{
				echo '<script type="text/javascript">
					alert("错误!文件移动失败");
					history.go(-1);
				</script>';
			}
		}else{
			echo '<script type="text/javascript">
				alert("不是上传文件");
				history.go(-1);
			</script>';
		}
	}		
}else{
	echo '<script type="text/javascript">
		alert("请选择上传文件");
		history.go(-1);
	</script>';
}

下一节是实现多文件上传的方法!

微信二维码
锐壳主机