index.php
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title></title>
</head>
<body>
<form action="doAction.php" method="post" enctype="multipart/form-data">
<input type="file" name="chooseFile">
<input type="submit" value="上传">
</form>
</body>
</html>
<input type="file">必须绑定一个name属性,form标签必须设置编码类型enctype="multipart/form-data"
doAction.php
<?php
#创建数据库连接
$mysqli = @new mysqli('localhost','root','12345678','qinfb_school');
//var_dump($mysqli);
#检测数据库连接状态,有错报错
if($mysqli -> connect_errno){
die('error:'.$mysqli -> connect_error);
}
#获取上传文件的相关可操作的信息
//print_r($_FILES["chooseFile"]);
#如果文件上传失败,打印报错信息:比如用户压根没有上传文件,直接点提交了,这个操作我们得阻止
if($_FILES["chooseFile"]["error"]){
# 有上传错误
echo <<< end
<script type="text/javascript">
alert("上传失败!请稍后重试。")
history.back();
</script>
end;
exit();
}
#设置文件的保存信息,生成以时间戳命名的文件名、生成以年月日命名的目录名
$fileName = md5(time());//文件名
$subFolder = date("Ymd")."/";//目录名
$pathName = "./".$subFolder.$fileName;//拼接完整的路径,在当前目录下生成
//检查:目标上传的文件是否已经存在
if(file_exists($pathName)){
//若存在就退出
echo <<< end
<script type="text/javascript">
alert("上传失败!请稍后重试。")
history.back();
</script>
end;
}
//检查:指定的目录是否已经创建存在
if(!file_exists("./".$subFolder)){
//若不存在,则创建该目录
mkdir("./".$subFolder);
}
#拿到上传文件的暂时缓存路径
//$_FILES["chooseFile"]["tmp_name"];
#将暂时存储的文件移动到指定的目录下
if(move_uploaded_file($_FILES["chooseFile"]["tmp_name"],$pathName)) {
echo "文件上传成功";
}
#拓展:
//限制文件上传格式或者类型(小bug,后缀大写不能排除,比如.PNG),相关后缀可查询W3C的MIME类型参考手册
if (!(($_FILES["chooseFile"]["type"] == "image/gif")
|| ($_FILES["chooseFile"]["type"] == "image/jpeg")
|| ($_FILES["chooseFile"]["type"] == "image/jpg")
|| ($_FILES["chooseFile"]["type"] == "text/plain")
|| ($_FILES["chooseFile"]["type"] == "image/png"))){
echo <<< end
<script type="text/javascript">
alert("上传文件类型不符!请稍后重试。")
history.back();
</script>
end;
exit();
}
//限制文件上传大小,单位字节
if($_FILES["chooseFile"]["size"] > 10240){
echo <<< end
<script type="text/javascript">
alert("上传文件过大!请稍后重试。")
history.back();
</script>
end;
exit();
}
?>
网友评论