A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

文件的上传在很多项目中使用概率是非常大的,为了更加方便的上传图片,可以将图片的上传封装在函数中

html代码:
[PHP] 纯文本查看 复制代码
<?php
	include "./function.php";
	if(isset($_POST['btn'])){
		$file=$_FILES["image"];
		$arr=upload($file,"./aa");
		echo "<pre>";
		print_r($arr);
	}
	
?>
<form action="" method="post" enctype="multipart/form-data">
	上传图片:<input type="file" name="image"><br>
	<input type="submit" value="提交" name="btn">
</form>

php代码
function.php文件
[PHP] 纯文本查看 复制代码
<?php
	/**
	*$file 上传的内容
	*$path 上传文件保存的目录地址
	*$type 限制上传文件的类型
	*$size 上传文件的大小
	*/

	function upload($file,$path="./upload/",$type=["image/png","image/jpeg","image/jpg"],$size=0){
		$result=['error'=>false,'info'=>''];
		$error=$file["error"];
		if($error!=0){
			switch($error){
				case 1: $result["info"]="上传文件大小大于服务器上限";break;
				case 2: $result["info"]="上传文件超出表单上限";break;
				case 3: $result["info"]="部分文件上传";break;
				case 4: $result["info"]="没有文件上传";break;
				case 6: $result["info"]="找不到临时目录";break;
				case 7: $result["info"]="上传文件写入失败";break;
			}
			return $result;
		}
		//判断文件类型在指定的要求中
		$tmp=$file["tmp_name"];
		//生成fileinfo文件
		$finfo=finfo_open(FILEINFO_MIME);
		$ty=finfo_file($finfo,$tmp);//image/jpeg;charset=binary
		$ty=explode(";",$ty)[0];
		if(!in_array($ty,$type)){
			$result["info"]="文件类型不符合要求";
			return $result;
		}


		//判断是否是上传的文件 is_uploaded_file()
		if(!is_uploaded_file($tmp)){
			$result["info"]="不是上传的文件";
			return $result;
		}

		//判断上传的文件大小是否符合要求
		$s=$file["size"];
		if($s>$size && $size>0){
			$result["info"]="上传文件过大";
			return $result;
		}

		//获取上传的文件名
		$name=$file["name"];
		//获取上传的文件名的扩展名
		$endname=pathinfo($name,PATHINFO_EXTENSION);  //jpg
		//生成唯一文件名
		$filename=uniqid().time().".".$endname;
		//每一天上传内容保存在当天的文件夹中
		$dirname=date("Y-m-d",time());   //2018-12-26
		//生成一个完整的目录名
		$path=rtrim($path,"/")."/".$dirname;
		if(!is_dir($path)){
			mkdir($path,777,true);
		}
		//生成一个完整的文件路径
		$fullpath=rtrim($path,"/")."/".$filename;
		if(move_uploaded_file($tmp,$fullpath)){
			 $result["info"]="上传成功";
			 $result["error"]=true;
			 return $result;
		}else{
			 $result["info"]="上传失败";
			 return $result;
		}
	}
?>

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马