如果你对该文章中的内容有疑问/不解,可以点击此处链接提问
要注明问题和此文章链接地址 点击此处跳转
$_GET和$_POST接受的是表单数据
$_FILES返回一个二维数组
第一维是表单里文件上传域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
<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
<?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
<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
<?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
<form action="1.php" method="post" enctype="multipart/form-data">
<input type="file" name="myfile[]"multiple="multiple" >
<input type="submit" value="提交">
</form>
php1
单文件上传的php文件
php2
<?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>";
}
函数积累
in_array(找的量,大量)判断是否存在
in_array($maintype,$type)