首页技术文章正文

封装文件上传【黑马PHP培训】

更新时间:2019年07月29日 15时28分20秒 来源:黑马程序员论坛

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

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;
		}
	}
?>

推荐了解热门学科

java培训 Python人工智能 Web前端培训 PHP培训
区块链培训 影视制作培训 C++培训 产品经理培训
UI设计培训 新媒体培训 软件测试培训 Linux运维
大数据培训 智能机器人软件开发




传智播客是一家致力于培养高素质软件开发人才的科技公司“黑马程序员”是传智播客旗下高端IT教育品牌。自“黑马程序员”成立以来,教学研发团队一直致力于打造精品课程资源,不断在产、学、研3个层面创新自己的执教理念与教学方针,并集中“黑马程序员”的优势力量,针对性地出版了计算机系列教材50多册,制作教学视频数+套,发表各类技术文章数百篇。

传智播客从未停止思考

传智播客副总裁毕向东在2019IT培训行业变革大会提到,“传智播客意识到企业的用人需求已经从初级程序员升级到中高级程序员,具备多领域、多行业项目经验的人才成为企业用人的首选。”

中级程序员和初级程序员的差别在哪里?
项目经验。毕向东表示,“中级程序员和初级程序员最大的差别在于中级程序员比初级程序员多了三四年的工作经验,从而多出了更多的项目经验。“为此,传智播客研究院引进曾在知名IT企业如阿里、IBM就职的高级技术专家,集中研发面向中高级程序员的课程,用以满足企业用人需求,尽快补全IT行业所需的人才缺口。

何为中高级程序员课程?

传智播客进行了定义。中高级程序员课程,是在当前主流的初级程序员课程的基础上,增加多领域多行业的含金量项目,从技术的广度和深度上进行拓展“我们希望用5年的时间,打造上百个高含金量的项目,覆盖主流的32个行业。”传智播客课程研发总监于洋表示。




黑马程序员热门视频教程

Python入门教程完整版(懂中文就能学会) 零起点打开Java世界的大门
C++| 匠心之作 从0到1入门学编程 PHP|零基础入门开发者编程核心技术
Web前端入门教程_Web前端html+css+JavaScript 软件测试入门到精通


在线咨询 我要报名
和我们在线交谈!