如果你对该文章中的内容有疑问/不解,可以点击此处链接提问
要注明问题和此文章链接地址 点击此处跳转
$_GET和$_POST接受的是表单数据
$_FILES返回一个二维数组
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
第一维是表单里文件上传域name的值 第二维是有五个元素 [name] => 文件原名 [type] => 文件的 MIME 类型 主类型/子类型 image/jpeg image/png text/html text/plain 普通文本文件.php .txt application/x-rar-compressed .rar application/zip .rar .zip video/x-msvideo AVI文件 .avi [tmp_name] => 临时的文件名 [error] => 0 : 就表示上传成功,没有错误发生 1 : 上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。 2 : 上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。 3 : 文件只有部分被上传。 4 : 没有文件被上传。 6 : 找不到临时文件夹。PHP 4.3.10 和 PHP 5.0.3 引进。 7 : 文件写入失败。PHP 5.1.0 引进。 [size] => 文件的大小(字节) |
处理上传的文件
php提供了两个函数来操作文件上传
1. is_uploaded_file($_FILES[‘tmp_name’]).
判断是否是通过POST方式上传上来的文件
- move_uploaded_file($_FILES[‘tmp_name’], $path).
将上传上来的文件,移动到指定位置
成功返回 true 失败 ,返回 false
实例
单文件上传
html
1 2 3 4 5 6 |
<form action="1.php" method="post"enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="10485760"> <input type="file" name="myfile1"> <input type="submit" value="提交"> </form> |
php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
<?php header("content-type:text/html;charset=utf-8"); date_default_timezone_set('PRC'); //echo "<pre>"; //print_r($_FILES);die; function uploadFile($file = "myfile",$size = 10485760,$type = array('image','text'),$uploads = "./uploads") { //判断表单是否为空 if(empty($_FILES)){ echo "请检查表单属性"; return false; } $fileName = $_FILES[$file]['name'];//文件名 $tmpName = $_FILES[$file]['tmp_name'];//临时存放的目录 $fileError = $_FILES[$file]['error']; $fileType = $_FILES[$file]['type']; $fileSize = $_FILES[$file]['size']; if($fileError>0){ switch($fileError){ 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 "找不到临时文件夹。PHP 4.3.10 和 PHP 5.0.3 引进"; break; case 7: echo "文件写入失败。PHP 5.1.0 引进"; break; } } //判断类型 list($maintype)=explode('/',$fileType); if(!in_array($maintype,$type)){ echo "文件类型错误"; return false; } //判断大小 if($fileSize > $size){ echo "文件超出限制大小"; return false; } $ext = pathinfo($fileName,PATHINFO_EXTENSION);//类型 $saveName = date('Ymd').uniqid().mt_rand(1,100).'.'.$ext; //生成保存路径 $path = rtrim($uploads,'/')."/".date('Y/m/d'); if(!file_exists($path)){ mkdir($path,0777,true); } $saveFile = $path .$saveName; if(move_uploaded_file($tmpName,$saveFile)){ echo "上传成功"; return $saveFile; }else{ echo "上传失败啊"; return false; } } echo uploadFile('myfile1'); |
多文件上传
1
html
1 2 3 4 5 6 7 8 |
<form action="1.php" method="post" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" VALUE="10485760"> <input type="file" name="myfile1" ><br> <input type="file" name="myfile2" ><br> <input type="file" name="myfile3" ><br> <input type="submit" value="提交"><br> </form> |
php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
<?php header("content-type:text/html;charset=utf-8"); date_default_timezone_set('PRC'); //echo "<pre>"; //print_r($_FILES);die; foreach($_FILES as $key=>$value){ uploadFile($key); } function uploadFile($file,$size=10485760,$type = array('image','text'),$uplads = './uploads') { if(empty($_FILES)){ echo "表单错误"; return false; } $fileName = $_FILES[$file]['name'];//名 $tmpName = $_FILES[$file]['tmp_name'];//临时存放位置 $fileType = $_FILES[$file]['type'];//类型 $fileSize = $_FILES[$file]['size'];//大小 $fileError = $_FILES[$file]['error'];//错误码 if($fileError>0){ switch($fileError){ 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 5: echo "找不到临时文件夹。PHP 4.3.10 和 PHP 5.0.3 引进"; break; } } //文件类型 list($maintype)=explode('/',$fileType); //判断是否有该类型 if(!in_array($maintype,$type)){ echo "类型错误"; return false; } //判断大小 if($fileSize>$size){ echo "超出最大上传大小"; return false; } $ext = pathinfo($fileName,PATHINFO_EXTENSION);//获取文件类型 //合成名字 $saveName = date('Ymd').uniqid().mt_rand(1,100).'.'.$ext; // 路径 $path = rtrim($uplads,'/').'/'.date('Y/m/d'); if(!file_exists($path)){ mkdir($path,0777,true); } $saveFile = $path.$saveName;//拼接路径名字 if(move_uploaded_file($tmpName,$saveFile)){ echo "上传成功"; return $saveFile; }else{ echo "上传失败"; return false; } } |
2
html
1 2 3 4 5 |
<form action="1.php" method="post" enctype="multipart/form-data"> <input type="file" name="myfile[]"multiple="multiple" > <input type="submit" value="提交"> </form> |
php1
1 2 |
单文件上传的php文件 |
php2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<?php require_once ('./uploads.php'); $len = count($_FILES['myfile']['name']); for($a = 0;$a<$len;$a++){ foreach($_FILES['myfile'] as $key =>$value){ $_FILES['myfile'.$a][$key] = $value[$a]; } } unset($_FILES['myfile']); foreach ($_FILES as $i => $item) { $names[] = uploadFile($i); } echo "<pre>"; print_r($names); foreach ($names as $i => $item) { echo "<img src='$item' width='200'>"."<br>"; } |
函数积累
1 2 3 |
in_array(找的量,大量)判断是否存在 in_array($maintype,$type) |