<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>文件上传</title>
</head>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
<h1>文件上传</h1>
<input type="file" name="file" accept="image/jpeg,image/png,image/gif,image/jpg">
<input type="hidden" name="MAX_FILE_SIZE" value="2000000">
<br>
<input type="submit" value="上传">
</form>
</body>
</html>
<?php
header('content-type:text/html;charset=utf-8');
ini_set('date.timezone','PRC');
//获取文件拓展名的函数
function ext($filename){
return strtolower(substr(strrchr($filename,'.'),1));
}
//生成随机文件名的函数
function fname(){
return md5(uniqid(microtime(true),true));
}
//递归创建文件目录
function dirs($dirname){
if (!is_dir($dirname)){
mkdir($dirname,0777,true);
return true;
}else{
dir(dirname($dirname));
mkdir($dirname,0777,true);
}
}
echo '<pre>';
$file = $_FILES['file'];
//文件上传错误判断
switch($file['error']){
case 0: $msg = '文件上传正确';
break;
case 1: $msg = '文件超过了php.ini中允许上传的最大值';
break;
case 2: $msg = '文件超过了表单隐藏域中MAX_FILE_SIZE的值';
break;
case 3: $msg = '文件部分被上传';
break;
case 4: $msg = '没有选择文件';
break;
case 6: $msg = '找不到文件临时目录';
break;
case 7: $msg = '文件写入失败';
}
echo $msg;
if ($file['error']==0){
//开始文件上传
$filename = fname(); //唯一文件名
$ext = ext($file['name']);//文件拓展名
$allowExt = array('jpg','png','jpeg','gif','zip');
if (!in_array($ext,$allowExt)){
echo '文件格式错误';
exit;
}
$newfile = $filename.'.'.$ext;
$uploadDir ='./uploads/'.date('Ymd').'/'.date('His').'/';
// var_dump(dirs($uploadDir));exit;
if (!dirs($uploadDir)){
echo '目录创建失败';
exit;
}
if (!is_uploaded_file($file['tmp_name'])){
echo '文件不是HTTPpost上传的';exit;
}
if (!move_uploaded_file($file['tmp_name'],$uploadDir.$newfile)){
echo '文件上传失败';
}
else{
echo '文件上传成功';
}
}