php处理文件上传的五种方式

 dd($_FILES);
        //方式一
        if(!empty($_FILES['file'])){
            //获取文件后缀方式一
            //strrchr()函数查找字符在指定字符串中从右面开始的第一次出现的位置,
            //如果成功,返回该字符以及其后面的字符,如果失败,则返回 false
            $extension = strrchr($_FILES['file']['name'], '.');
            if(!$extension){
                return '文件后缀错误';
            }
            $file_name = time().mt_rand(10000,99999).$extension;
            
//             //获取文件后缀方式二
//             $arr = explode('.', $_FILES['file']['name']);
//             //文件后缀
//             $extension = end($arr);
//             //文件名
//             $file_name = time().mt_rand(10000,99999).'.'.$extension;
            
            //目录
            $dir = './uploads/111/222/';
            //判断目录是否存在方式一
            if(!is_dir($dir)){
                if(!mkdir($dir,0755,true)){
                    return '创建目录失败';
                }
            }
            
//             //判断目录是否存在方式二
//             if(!file_exists($dir)){
//                 if(!mkdir($dir,0755,true)){
//                     return '创建目录失败';
//                 }
//             }
            if(move_uploaded_file($_FILES['file']['tmp_name'], $dir.$file_name)){
                return 'success';
            }else{
                return 'error';
            }
        }

        //方式二
        if(!empty($_FILES['file'])){
            $extension = strrchr($_FILES['file']['name'], '.');
            if(!$extension){
                return '文件后缀错误';
            }
            $file_name = time().mt_rand(10000,99999).$extension;
            $dir = './uploads/111/222/';
            if(!is_dir($dir)){
                if(!mkdir($dir,0755,true)){
                    return '创建目录失败';
                }
            }
            if(copy($_FILES['file']['tmp_name'], $dir.$file_name)){
                @unlink($_FILES['file']['tmp_name']);
                return 'success';
            }else{
                return 'error';
            }
        }

        //方式三
        if(!empty($_FILES['file'])){
            $extension = strrchr($_FILES['file']['name'], '.');
            if(!$extension){
                return '文件后缀错误';
            }
            $file_name = time().mt_rand(10000,99999).$extension;
            $dir = './uploads/111/222/';
            if(!is_dir($dir)){
                if(!mkdir($dir,0755,true)){
                    return '创建目录失败';
                }
            }
            if(rename($_FILES['file']['tmp_name'], $dir.$file_name)){
                return 'success';
            }else{
                return 'error';
            }
        }
        
        //方式四
        if(!empty($_FILES['file'])){
            $extension = strrchr($_FILES['file']['name'], '.');
            if(!$extension){
                return '文件后缀错误';
            }
            $file_name = time().mt_rand(10000,99999).$extension;
            $dir = './uploads/111/222/';
            if(!is_dir($dir)){
                if(!mkdir($dir,0755,true)){
                    return '创建目录失败';
                }
            }
            $data = file_get_contents($_FILES['file']['tmp_name']);
            if(file_put_contents($dir.$file_name, $data)){
                @unlink($_FILES['file']['tmp_name']);
                return 'success';
            }else{
                return 'error';
            }
        }

        //方式五
        if(!empty($_FILES['file'])){
            $extension = strrchr($_FILES['file']['name'], '.');
            if(!$extension){
                return '文件后缀错误';
            }
            $file_name = time().mt_rand(10000,99999).$extension;
            $dir = './uploads/111/222/';
            if(!is_dir($dir)){
                if(!mkdir($dir,0755,true)){
                    return '创建目录失败';
                }
            }
            
            $targetFilename = $dir.$file_name;
            $sourceHandle = fopen($_FILES['file']['tmp_name'], 'rb');
            $targetHandle = fopen($targetFilename, 'wb');
            while (!feof($sourceHandle)){
                //每次处理1M的字节
                $content = fread($sourceHandle, 1024 * 1024);
                fwrite($targetHandle, $content);
            }
            fclose($sourceHandle);
            fclose($targetHandle);
            if(file_exists($targetFilename)){
                return 'success';
            }else{
                return 'error';
            }
        }
        
        //多文件上传
        if(!empty($_FILES['file'])){
            $fail_arr = [];
            foreach ($_FILES['file']['name'] as $k=>$v){
                $extension = strrchr($_FILES['file']['name'][$k], '.');
                if(!$extension){
                    return '文件后缀错误';
                }
                $file_name = time().mt_rand(10000,99999).$extension;
                //目录
                $dir = './uploads/111/222/';
                //判断目录是否存在方式一
                if(!is_dir($dir)){
                    if(!mkdir($dir,0755,true)){
                        return '创建目录失败';
                    }
                }
                if(!move_uploaded_file($_FILES['file']['tmp_name'][$k], $dir.$file_name)){
                    $fail_arr[] = $_FILES['file']['name'][$k];
                }
            }
            if(empty($fail_arr)){
                return 'success';
            }else{
                return $fail_arr;
            }
        }

上一篇:《Web性能权威指南》-浏览器API与协议-读书笔记


下一篇:聊聊Web3D 发展趋势