限时免费试用:欢迎注册 api.bigmodel.org ,快速体验大模型 API 接入服务。
当前位置:首页 >开发者 >PHP笔记 >PHP基础

php文件上传

分类:PHP基础时间:2017-11-28浏览:4098
$_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方式上传上来的文件
  1. move_uploaded_file($_FILES['tmp_name'], $path). 将上传上来的文件,移动到指定位置 成功返回 true 失败 ,返回 false

实例

单文件上传

html
 
php
";
//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




php
";
//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
php1
单文件上传的php文件
php2
$value){
        $_FILES['myfile'.$a][$key] = $value[$a];
    }
}

unset($_FILES['myfile']);

foreach ($_FILES as $i => $item) {
    $names[] = uploadFile($i);
}

echo "
";
print_r($names);

foreach ($names as $i => $item) {
    echo ""."
"; }

函数积累

in_array(找的量,大量)判断是否存在
in_array($maintype,$type)
本站文章如未注明出处均为原创,转载请注明出处,如有侵权请邮件联系站长。
0/500
Share your thoughts respectfully.