• php实现文件上传


    <?php 
    function upload($save_path,$custom_upload_max_filesize,$key,$type=array('jpg','jpeg','gif','png','txt')){
        $return_data=array();
        //获取phpini配置文件里面的upload_max_filesize值
        $phpini=ini_get('upload_max_filesize');
        //获取phpini配置文件里面的upload_max_filesize值的单位
        $phpini_unit=strtoupper(substr($phpini,-1));
        //获取phpini配置文件里面的upload_max_filesize值的数字部分
        $phpini_number=substr($phpini,0,-1);
        //计算出转换成字节应该乘以的倍数
        $phpini_multiple=get_multiple($phpini_unit);
        //转换成字节
        $phpini_bytes=$phpini_number*$phpini_multiple;
        
        $custom_unit=strtoupper(substr($custom_upload_max_filesize,-1));
        $custom_number=substr($custom_upload_max_filesize,0,-1);
        $custom_multiple=get_multiple($custom_unit);
        $custom_bytes=$custom_number*$custom_multiple;
        
        if($custom_bytes>$phpini_bytes){
            $return_data['error']='传入的$custom_upload_max_filesize大于PHP配置文件里面的'.$phpini;
            $return_data['return']=false;
            return $return_data;
        }
        $arr_errors=array(
            1=>'上传的文件超过了 php.ini中 upload_max_filesize 选项限制的值',
            2=>'上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值',
            3=>'文件只有部分被上传',
            4=>'没有文件被上传',
            6=>'找不到临时文件夹',
            7=>'文件写入失败'
        );
        if(!isset($_FILES[$key]['error'])){
            $return_data['error']='由于未知原因导致,上传失败,请重试!';
            $return_data['return']=false;
            return $return_data;
        }
        if ($_FILES[$key]['error']!=0) {
            $return_data['error']=$arr_errors[$_FILES['error']];
            $return_data['return']=false;
            return $return_data;
        }
        if(!is_uploaded_file($_FILES[$key]['tmp_name'])){
            $return_data['error']='您上传的文件不是通过 HTTP POST方式上传的!';
            $return_data['return']=false;
            return $return_data;
        }
        if($_FILES[$key]['size']>$custom_bytes){
            $return_data['error']='上传文件的大小超过了程序作者限定的'.$custom_upload_max_filesize;
            $return_data['return']=false;
            return $return_data;
        }
        $arr_filename=pathinfo($_FILES[$key]['name']);
        if(!isset($arr_filename['extension'])){
            $arr_filename['extension']='';
        }
        if(!in_array($arr_filename['extension'],$type)){
            $return_data['error']='上传文件的后缀名必须是'.implode(',',$type).'这其中的一个';
            $return_data['return']=false;
            return $return_data;
        }
        if(!file_exists($save_path)){
            if(!mkdir($save_path,0777,true)){
                $return_data['error']='上传文件保存目录创建失败,请检查权限!';
                $return_data['return']=false;
                return $return_data;
            }
        }
        $new_filename=str_replace('.','',uniqid(mt_rand(100000,999999),true));
        if($arr_filename['extension']!=''){
            $new_filename.=".{$arr_filename['extension']}";
        }
        $save_path=rtrim($save_path,'/').'/';
        if(!move_uploaded_file($_FILES[$key]['tmp_name'],$save_path.$new_filename)){
            $return_data['error']='临时文件移动失败,请检查权限!';
            $return_data['return']=false;
            return $return_data;
        }
        $return_data['save_path']=$save_path.$new_filename;
        $return_data['filename']=$new_filename;
        $return_data['return']=true;
        return $return_data;
    }
    function get_multiple($unit){
        switch ($unit){
            case 'K':
                $multiple=1024;
                return $multiple;
            case 'M':
                $multiple=1024*1024;
                return $multiple;
            case 'G':
                $multiple=1024*1024*1024;
                return $multiple;
            default:
                return false;
        }
    }
    header("Content-type:text/html;charset=utf-8");
    if(isset($_POST['submit'])){
        $upload=upload('a/b/c','2M','myfile');
        if(!$upload['return']){
            var_dump($upload['error']);
        }else{
            echo '上传成功!';
        }
    }
    ?>
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
    <meta charset="utf-8" />
    <title>上传页面</title>
    </head>
    <body>
    <form action="" method="post" enctype="multipart/form-data">
        <input type="file" name="myfile" />
        
        <input type="submit" name="submit" value="开始上传" />
    </form>
    </body>
    </html>
  • 相关阅读:
    博客园培训团队工作进度通报
    ASP.NET 2.0打造购物车和支付系统之二
    vs2005视频教程系列 之 MasterPage创建使用 [视频]
    今天过节,我给自己放假一天,不发布教程!
    Visual Studio 2005入门 之 Table [视频]
    vs2005入门 之 GridView使用基础 [视频]
    存放视频文件的服务器出问题了,所有视频暂时打不开!
    加入博客园培训团队须知
    请关心这个系列教程命运的朋友请进来讨论下!
    未来一周将不能发布教程!
  • 原文地址:https://www.cnblogs.com/Emily-m/p/10761001.html
Copyright © 2020-2023  润新知