upload.html 部分
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title> 上传功能练习 </title>
</head>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="image" />
<input type="submit" value="上传文件" />
</form>
</body>
</html>
upload.php 部分
<?php
header("content-type:text/html;charset=utf-8");
/*var_dump($_FILES);
die;*/
//var_dump($file);
$name=$_FILES['image']['name']; // 原文件名
$type=$_FILES['image']['type']; // 源文件类型
$temp=$_FILES['image']['tmp_name']; // 源文件上传所存储的临时文件夹路径 + 临时文件名
$error=$_FILES['image']['error']; // 获取的错误的提示
$size=$_FILES['image']['size']; // 上传文件的字符节大小
// 判断文件上传的错误类型
switch ($error) {
case '1':
echo "上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值";
break;
case '2':
echo "上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值";
break;
case '3':
echo "文件只有部分被上传";
break;
case '4':
echo "没有文件被上传";
break;
case '6':
echo "找不到临时文件夹";
break;
case '7':
echo "文件写入失败";
break;
/*case '0':
echo "文件上传成功";*/
}
// 判断文件大小是否超限
if($size>3145728){die("单个文件限制最大 3M 以内");
}
// 判断上传的文件的类型是否符合要求 (根据文件后缀判断)
$allow=array('image/jpeg','image/png','image/jpg','image/gif'); // 允许上传的文件类型
if(!in_array($type, $allow)){echo "上传的文件类型不正确,"."允许上传文件类型有".implode(',',$allow);
die;
}
// 判断上传文件的实际文件类型是否符合要求 (根据文件的 MIME 类型进行判断)
$finfo=finfo_open(FILEINFO_MIME_TYPE);
$mime=finfo_file($finfo,$temp);
/* var_dump($finfo);
var_dump($mime);
exit;*/
if(!in_array($mime,$allow))
{die("文件的 MIME 类型不合法");
}
// 获取源文件后缀名
$suffix=strrchr($name,".") ; // 通过字符串 strrchr() 函数获取源文件的文件后缀名
// 重命名 生成一个随机名字的函数 文件名 = 当前时间 + 随机的几位数字 + 文件后缀名
$new_name=date('YmdHis').'-'.mt_rand(1000,9999).$suffix;
// 移动临时文件保存到指定文件夹并添加重命名
$path= 'image/'; // 文件存储路径 同级目录下的 image 文件夹
$str=$path.$new_name; // 拼接文件路径 + 文件名 + 文件名后缀
$result=move_uploaded_file($temp,$str);
if($result){echo "文件上传成功 文件名为 $new_name";}else{echo "文件上传失败";}
?>
正文完
有偿技术支持加微信
发表至: 编码笔记
2023-08-05