上传文件


/* 上传缩略图 */
        $.ajaxFileUpload({
            url:'/admin/Upload/SchoolSendXhb',
            secureuri:false,
            fileElementId:'img_url',
            dataType: 'json',
            data:{filename: 'img_url'},
            success: function (data) {
                if(typeof(data.err) != 'undefined') {
                    if(data.err != '') {
                        alert(data.err);
                        //$("#img_url_note").html('文件上传失败');
                    } else {
                        //$("#img_url_note").html('文件上传完成');
                        $("#imageurl").attr("src", data.msg.url);
                        $(".img_wenzi").hide();

                        // 图片上传(存到数据库)
                        $.ajax({
                            url:'/admin/Index/schoolImgUpload',
                            datatype:'json',
                            data:{school_img:$("#imageurl").attr("src")},
                            success: function(s) {
                                // 判断code是否定义
                                if (typeof s.response == 'undefined') {
                                    // 返回信息
                                    alert(s.error_response.msg);
                                } else {
                                    alert(s.response.msg);
                                }
                            }
                        });
                    }
                }
            }
        });

 

/**
     * [index 上传文件]
     * @param  string $type        [上传类型]
     * @param  string $upload_path [保存路径]
     * @return [type]              [信息]
     * heyafei 2017/02/06
     */
    public function index($upload_path = '', $type = '')
    {
        header('Content-Type: text/html; charset=UTF-8');
        $inputname = 'filename';//表单文件域name
        $maxattachsize = 1020480000;//最大上传大小100M
        $upext = $type;//上传扩展名
        ini_set('date.timezone','Asia/Shanghai');//时区

        if (isset($_SERVER['HTTP_CONTENT_DISPOSITION'])) {//HTML5上传
            if (preg_match('/attachment;\s+name="(.+?)";\s+filename="(.+?)"/i',
                $_SERVER['HTTP_CONTENT_DISPOSITION'],$info)) {
                $_upload_tmp_dir = $this->is_local ? 
                        ini_get("upload_tmp_dir") : '/tmp';
                $temp_name =  $_upload_tmp_dir .'/'.date("YmdHis").
                                    mt_rand(1000,9999).'.tmp';

                file_put_contents($temp_name, file_get_contents("php://input"));
                $size = filesize($temp_name);
                $_FILES[$info[1]]=array('name'=>$info[2],
                                    'tmp_name'=>$temp_name,
                                    'size'=>$size,
                                    'type'=>'',
                                    'error'=>0);
            }
        }

        $err = "";
        $msg = "''";
        $upfile=@$_FILES[$inputname];
        if (!isset($upfile)) {
            $err='文件域的name错误';
        } elseif (!empty($upfile['error'])) {
            switch($upfile['error']) {
                case '1':
                    $err = '文件大小超过了php.ini定义的upload_max_filesize值';
                    break;
                case '2':
                    $err = '文件大小超过了HTML定义的MAX_FILE_SIZE值';
                    break;
                case '3':
                    $err = '文件上传不完全';
                    break;
                case '4':
                    $err = '无文件上传';
                    break;
                case '6':
                    $err = '缺少临时文件夹';
                    break;
                case '7':
                    $err = '写文件失败';
                    break;
                case '8':
                    $err = '上传被其它扩展中断';
                    break;
                case '999':
                default:
                    $err = '无有效错误代码';
                    break;
            }
        } elseif (empty($upfile['tmp_name']) || $upfile['tmp_name'] == 'none') {
            $err = '无文件上传';
        } else {
            $temppath=$upfile['tmp_name'];
            $fileinfo=pathinfo($upfile['name']);
            $extension=$fileinfo['extension'];
            
            
            if($type == 'jpeg,jpg,png'){ //图片
                $match_res = preg_match('/'.str_replace(',','|',$upext).'/i',$extension);
            }else{ // 附件
                $match_res = preg_match('/'.str_replace(', ','|',$upext).'/i',$extension);
            }
            //echo $upext.'+++'.$extension;
            //dump(preg_match('/'.str_replace(',','|',$upext).'/i',$extension));die;
            
            if ($match_res) {
                PHP_VERSION < '4.2.0' && 
                    mt_srand((double)microtime() * 1000000);
                $filename = date("YmdHis").mt_rand(1000,9999).
                                '.'.$extension;
                //同时在web服务器创建备份
                $attachdir= $upload_path;//上传文件保存路径,结尾不要带/
                if (!is_dir($attachdir)) {
                    @mkdir($attachdir, 0777);
                }
                $bytes=filesize($temppath);
                if ($bytes > $maxattachsize) {
                    $err = '请不要上传大小超过'.$this -> 
                            formatBytes($maxattachsize).'的文件';
                } else {
                    $attach_dir = $attachdir;
                    if (!is_dir($attach_dir)) {
                        @mkdir($attach_dir, 0777);
                    }
                    $target = $attach_dir.'/'.$filename;
                    rename($temppath,$target);
                    @chmod($target,0755);
                    $target  = $this->jsonString($target);
                    $pic_dir = $attach_dir.'/'.$filename;
                    if (!file_exists($pic_dir)) {
                        echo "File is not exists";
                        exit;
                    }
                    if (defined('xhb_mode') && xhb_mode) { //晓黑板模式 
                        //$filename = BM("Xhbapi")->imgUpload($pic_dir,$extension,$upfile['name']);
                        
                        $xhbfileinfo = $domainNameArr = array();
                        $xhbfileinfo = BM("Xhbapi")->imgUpload($pic_dir,$extension,$upfile['name']);
                        
                        unlink($pic_dir);
                        //组装图片/附件地址
                        $domainNameArr = BM("Xhbapi")->getdomain();
                        $filename = $domainNameArr['filehost'].$xhbfileinfo['fid'];
                        
                        
                        if($type == 'jpeg,jpg,png'){ //图片
                            
                            $msg = "{'url':'$filename','filename':'$xhbfileinfo[fid]',
                            'returnname':'".$this -> jsonString($filename).
                            "','id':'1'}";
                        }else{
                            $docinfo = $xhbfileinfo['fid'].'(chb)'.$xhbfileinfo['fileName'].'(chb)'.$xhbfileinfo['mimeType'];
                            
                            $msg = "{'url':'$filename','filename':'$xhbfileinfo[fileName]','docinfo':'$docinfo',
                            'returnname':'".$this -> jsonString($filename).
                            "','id':'1'}";
                        }
                        
                        //echo '<pre>';
                        //print_r($xhbfileinfo);die;
                        
                        
                        
                        
                    } else {
                        //获取路由方法
                        $filename = 'http://'.$_SERVER['HTTP_HOST'].'/upload/'.$filename;
                        
                        $msg = "{'url':'$filename',
                        'returnname':'".$this -> jsonString($filename).
                        "','id':'1'}";
                    } 
                    
                    //echo '<pre>';
                    //print_r($filename);die;
                }
            } else {
                $err='上传文件扩展名必需为:'.$upext;
            }
            @unlink($temppath);
        }
        return $result= "{'err':'".$this -> jsonString($err)."','msg':".$msg."}";
    }

 

posted @ 2017-03-08 13:24  代罪羊  阅读(287)  评论(0编辑  收藏  举报