ThinkPHP 上传文件方法

ThinkPHP 上传文件方法

准备工作

            在ThinkPHP的家目录中新建文件夹 Uploads

新建图片表
字段名  类型是否为空自增索引备注
idint是 primary key无符号的自增ID
savenamevarchar(255)图片名
pathvarchar(255)否  图片路径
add_timevarchar(255)图片添加的时间
参数说明
/**
 * 上传文件类型控制
 * @param  string   $path    字符串 保存文件路径示例: /Upload/image/
 * @param  integer  $id     图片ID
 * @param  string   $format  文件格式限制
 * @param  integer  $maxSize 允许的上传文件最大值 52428800
 * @param  integer  $aas   判断返回方式  1为ajax返回   2为rerurn
 * @return booler   返回ajax的json格式数据
 */
调用      
ajax_upload($path,$id,$format,$maxSize,$$aas);
方法
function ajax_upload($path='file',$id='',$format='empty',$maxSize='52428800',$aas=1){

    ini_set('max_execution_time', '0');
    // 去除两边的/
    $path=trim($path,'/');
    // 添加Upload根目录
    $path=strtolower(substr($path, 0,6))==='Uploads' ? ucfirst($path) : 'Uploads/'.$path;
    // 上传文件类型控制
    $ext_arr= array(
        'image' => array('gif', 'jpg', 'jpeg', 'png', 'bmp'),
        'photo' => array('jpg', 'jpeg', 'png'),
        'flash' => array('swf', 'flv'),
        'media' => array('swf', 'flv', 'mp3', 'wav', 'wma', 'wmv', 'mid', 'avi', 'mpg', 'asf', 'rm', 'rmvb'),
        'file' => array('doc', 'docx', 'xls', 'xlsx', 'ppt', 'htm', 'html', 'txt', 'zip', 'rar', 'gz', 'bz2','pdf')
    );
    if(!empty($_FILES)){
        // 上传文件配置
        $config=array(
            'maxSize'   =>  $maxSize,               // 上传文件最大为50M
            'rootPath'  =>  './',                   // 文件上传保存的根路径
            'savePath'  =>  '/'.$path.'/',         // 文件上传的保存路径(相对于根路径)
            'saveName'  =>  array('uniqid',time()),     // 上传文件的保存规则,支持数组和字符串方式定义
            'autoSub'   =>  false,                   // 自动使用子目录保存上传文件 默认为true
            'exts'      =>    isset($ext_arr[$format])?$ext_arr[$format]:'',
        );
        // 实例化上传
        $upload=new \Think\Upload($config);
        // 调用上传方法
        $info=$upload->upload();

        $data=array();
        if(!$info){
            // 返回错误信息
            $error=$upload->getError();
            $data['error_info']=$error;
            if($aas == 1){

                echo json_encode($data);
            }elseif($aas == 2){
                return $data;
            }else{
                echo json_encode($data);
            }
        }else{
            if($id){
                
                // 存在ID
                foreach($info as $file){
                    $img=D('img')->find($id);  //查询出存在的图片信息

                    unlink('.'.$img['path'].$img['savename']);   //删除图片
               
                    $image['savename']=$file['savename'];
                    $image['path']=$file['savepath'];
                    D('img')->where(array('id'=>$id))->save($image);
                    $data['name']=trim($file['savepath'].$file['savename'],'.');
                    $data['ImagesId']=$id;
                    if($aas == 1){

                        echo json_encode($data);
                    }elseif($aas == 2){
                        return $data;
                    }else{
                        echo json_encode($data);
                    }
                }

            }else{
                // 没有ID
                foreach($info as $file){
                    $image['savename']=$file['savename'];
                    $image['path']=$file['savepath'];
                    $image['add_time']=time();
                    $image_id=D('img')->add($image);
                    $data['name']=trim($file['savepath'].$file['savename'],'.');
                    $data['ImagesId']=$image_id;
                    if($aas == 1){

                        echo json_encode($data);
                    }elseif($aas == 2){
                        return $data;
                    }else{
                        echo json_encode($data);
                    }
                }
            }

        }
    }
}

 

转载于:https://my.oschina.net/hcfblog/blog/1619752

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值