一:文件上传需要注意的是form表单一定要有enctype="multipart/form-date";属性;input标签中的type属性一定是file;
表单验证是当前页面:
$_FILES是一个超全局变量可以直接调用:数组内容如下:
1,$_FILES['myFile']['name']:客户端问价的原名称:本文相当于$_FILES['upload']['name'];
2,$_FILES['myFile']['type']:文件的MIME类型,需要浏览器提供该信息的支持,例如:image/gif;
3,$_FILES['myFile']['size']:已上传的文件的大小,单位为字节;
4,$_FILES['myFile']['tmp_name']:文件被上传后在服务器端储存的临时文件名,一般四系统默认可以在php.ini的 upload_tmp_dir指定,但是putenv()函数设置是不起作用的;
6,$_FILES['myFile']['error']:和该文件上传相关的错误代码:['error']是在php4.2.0版本中增加的,
UPLOAD_ERR_OK=0;没有发生错误,文件上传成功:
UPLOAD_ERR_INI_SIZE=1;上传文件超过了php.ini中upload_max_filesize选项限制的值
UPLOAD_ERR_FORM_SIZE=2;上传文件的大小超过了html表单中MAX_FILE_SIZE选项的值
UPLOAD_ERR_PARTIAL=3;文件只有部分被上传;
UPLOAD_ERR_NO_FILE=4;没有文件被上传,值为5 上传文件大小为零;
<?php header('Content-Type:text/html;charset=utf-8'); /*php.inc*1,file_uploads=true;允许上传文件: *2,max_input_time=30;允许脚本最长运行时间 *3,post_max_size=8M;允许脚本最长运行时间 *4,upload_max_filesize=2M; 允许上传的文件大小 *5,upload_time_dir=c:;文件的临时目录,mac/linux不用设置*/
/*上传文件的所有信息都会保存到超全局变量 */ //1,检测是否提交了表单 if($_SERVER['REQUEST_METHOD']=='POST'){ //2,检测是否上传了文件 if($_FILES['upload']){ //3,设置允许上传的文件类型 放在数组$allowed中 $allowed=['image/jpeg','image/png','image/JPG','image/X-PNG','image/PNG','image/x-png']; //4,检测用户上传的文件类型是不是在允许的类型列表中 if(in_array($_FILES['upload']['type'],$allowed)){ //5,创建一个临时目录 $temFile=$_FILES['upload']['tmp_name']; //6,将文件从临时目录转移到目标目录 if(move_uploaded_file($temFile,__DIR__ .'/../php/img/'.$_FILES['upload']['name'])){ echo '<script>alert("文件上传成功")</script>'; }else{ echo '<script>alert("文件上传失败")</script>'; } }else{ echo '<script style="color:red">上传的文件类型不允许</script>'; } } if($_FILES['upload']['error']>0){ switch($_FILES['upload']['error']){ case 1: echo '<h2 style="color:red">文件上传大小超过了PHP.INI中规定的大小</h2>'; break; case 2: echo '<h2 style="color:red">文件大小超过了form表单中规定的大小</h2>'; break; case 3: echo '<h4 style="color:red">文件仅上传不完整</h4>'; break; case 4: echo '<h4 style="color:red">没有问件被上传</h4>'; break; case 6: echo '<h4 style="color:red">没有创建文件的临时文件夹</h4>'; break; case 7: echo '<h4 style="color:red">无法写入磁盘</h4>'; break; case 8: echo '<h4 style="color:red">文件上传被终止</h4>'; break; default: echo '<h4 style="color:red">意外错误请检查后重新上传</h4>'; break; } //删除临时文件 :此项可选 if(file_exists($temFile) && is_file($temFile)){ unlink($temFile); } } } ?> <!DOCTYPE html> </html> <head> <title>文件上传</title> <link rel="stylesheet" href="../dist/css/bootstrap.css"> <script src=" https://code.jquery.com/jquery-3.2.1.min.js"> </script><script src="../dist/js/bootstrap.js"></script> <style> *{ padding:0; margin:0;} .box{ height:400px; width:400px; background-color:#eee; margin-top:100px; padding:0; position:relative; } .box-top{ width:400px; height:50px; line-height:55px; background:skyblue; margin-left:0px; text-align:center; font-weight:bold; } </style> </head> </body> <div class="container"> <div class="row "> <div class="col-md-4 box col-md-push-4"> <form action="" method="post" enctype="multipart/form-data"> <div class="row box-top"> <h4>文件上传</h4></div> <!--1,form标签必须设置enctype=multipart/form-data,允许多种类型数据2,input 标签的type属性必须是file类型--> <div class="row" style="margin-top:20px; text-align:center;"> <div class="col-md-10 col-md-push-1"> <input type="file" name="upload" > <p style="margin-top:200px"> <input style="width:300px;" class="btn btn-primary" type="submit" value="上传文件"> </p> </div> </div> </div> </div> </div> </body> </form> </html>