1.获取文件上传信息
2.判断文件是否可以成功上传到服务器,$_FILES['pic']['error'] 为0表示上传成功
if()判断和switch()循环
3.获取上传文件的后缀名
使用pathinfo()
作用:返回一个关联数组包含有 path 的信息。返回关联数组还是字符串取决于 options
参数:path 要解析的路径
options 如果指定了,将会返回指定元素;它们包括: PATHINFO_DIRNAME,PATHINFO_BASENAME 和 PATHINFO_EXTENSION 或 PATHINFO_FILENAME 。
如果没有指定 options 默认是返回全部的单元。
4. 通过文件的后缀名,来判断文件是否为允许上传的类型
判断后缀不为空,并且在给定的数组类型中
5.判断上传的文件是否为允许大小
先判断文件大小是否为true,在判断文件是否超过最大值
6.为了系统安全,也为了同名文件不会被覆盖,上传后将文件名使用系统重新定义
使用随机函数mt_rand()
7. 判断是否为上传文件, 如果文件上传成功则输出信息
使用is_uploaded_file:判断文件是否是通过HTTP POST上传的
使用move_uploaded_file :将上传的文件移动到新位置
PHP中的upload.php代码:
1 <?php 2 header("content-type:text/html;charset=utf-8"); 3 echo "<pre>"; 4 //1.获取文件上传信息 5 $error=$_FILES['pic']['error']; 6 $name=$_FILES['pic']['name']; 7 $allowType=['jpg','png']; 8 $size=$_FILES['pic']['size']; 9 $maxSize=100000; 10 $tmpname=$_FILES['pic']['tmp_name']; 11 //2.判断文件是否可以成功上传到服务器,$_FILES['pic']['error'] 为0表示上传成功 12 if($error){ 13 echo "文件上传失败!"; 14 switch($error){ 15 case 1: 16 case 2:die("上传文件过大");break; 17 case 3:die("上传部分被上传");break; 18 case 4:die("没有选择上传文件");break; 19 case 6:die("系统错误,没有临时目录");break; 20 case 7:die("系统错误,临时目录不可写");break; 21 } 22 } 23 //3.获取上传文件的后缀名 24 $siffix=pathinfo($name,PATHINFO_EXTENSION); 25 //4. 通过文件的后缀名,来判断文件是否为允许上传的类型 26 if(!empty($allowType)){ 27 if(!in_array($siffix,$allowType)){ 28 die("文件类型不符合要求"); 29 } 30 } 31 //5. 判断上传的文件是否为允许大小 32 if($size){ 33 if($size>$maxSize){ 34 die("上传文件大小超出要求"); 35 } 36 } 37 //6.为了系统安全,也为了同名文件不会被覆盖,上传后将文件名使用系统重新定义 38 $newname=date("YmdHis").mt_rand("11111","999999").".".$siffix; 39 //7. 判断是否为上传文件, 如果文件上传成功则输出信息,否则输出文件上传失败 40 if (is_uploaded_file($tmpname)) { 41 if(move_uploaded_file($tmpname, "./test/{$newname}")){ 42 echo "文件上传成功,新文件名{$newname}<br/>"; 43 }else{ 44 die("文件移动失败"); 45 } 46 }else{ 47 die("非法文件"); 48 }
HTML的代码:
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <h2>完善的文件上传</h2> <form action="upload.php" method="post" enctype="multipart/form-data"> <!-- 客户端限制:通过表单的隐藏域限制文件上传的最大值 --> <input type="hidden" name="MAX_FILE_SIZE" value="100000"> 账户名:<input type="text" name="name"><br/> 头像:<input type="file" name="pic"><br/> <input type="submit" value="提交"> </form> </body> </html>