
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 "文件上传失败";
}
?>