文件的上传在很多项目中使用概率是非常大的,为了更加方便的上传图片,可以将图片的上传封装在函数中
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;
}
}
?>
|