thinkphp 多图和单图上传处理 (我认为这个方法更好吧 比我以前写的 高效了不少)

来源:互联网 发布:软件实施全过程 编辑:程序博客网 时间:2024/05/19 00:10

我这个方法是写在model里面的,

这个方法的返回值是:

如果是单图 返回的是  $data['图片name'] = 图片路径;

如果是多图 返回的是 $data['图片的name']['图片的下标']  = 图片的路径

多图直接 input name="xxx[]" 即可  会分辨没有上传的下标

方法越来越完美 , 我缺开始要用tp5了  人总是要在进步,  tp5的方法我相信我会写的比现在还好

 //图片处理    public function pic($file){        $upload = new \Think\Upload(C('IMG_ATTRIBUTE'));        $upload->savePath = 'mxdesigner/';        $data = [];        if(is_array($file)){            //遍历上传图片            foreach($file as $key => $v){                //判断是否是多图上传:多图处理                if(count($v) !== count($v,1)){                        $temporary = $upload->upload([$v]);                        foreach($temporary as $k => $value){                            $data[$key][$k] = $value['savepath'].$value['savename'];                        }                }else{                    //这些是单图的处理                    $info = $upload->uploadOne($v);                    if($info){                        $data[$key] = $info['savepath'].$info['savename'];                    }                }            }            return $data;        }else{            $this -> getError($upload -> getError());        }    }觉得这个方法还得加工下,  今天重新完工了  目前没找到BUG ,  //明星设计师添加和修改    public function addData($data){        $children_id = $data['children_id'];        $workorder = $data['workorder'];        if(!empty($data['styles'])){            $data['styles'] = implode(',',$data['styles']);        }        //通过主键id是否存在判断是添加还是修改        if(!empty($data['id']))            $parent_id = $this -> save($data);        else            $parent_id = $this -> add($data);        //证明数据写入成功,给附表添加数据 添加        if($parent_id > 0){            if(isset($data['pic'])){                foreach ($data['pic'] as $key => $value) {                    //临时值 组合数据                    $temporary = [                        'pic' => $value,                        'workorder' => $data['workorder'][$key],                        'designer_id' => $parent_id,                        ];                    M('Mxpic') -> add($temporary);                }            }        return $parent_id;        //修改数据        }elseif($parent_id !== false){            //修改+新上传            if(isset($data['pic'])){                //通过children_id 判断是否是新增属性 从而做判断                foreach ($workorder as $key => $value) {                    //临时值 组合数据                    $temporary = [                        'workorder' => $value,                        'designer_id' => $data['id'],                    ];                    //排序和子id必须存在  图片可以存在  则为修改                    if(isset($value) && isset($children_id[$key]) || isset($data['pic'][$key])){                        $temporary['id'] = $children_id[$key];                        if(isset($data['pic'][$key]))                            $temporary['pic'] = $data['pic'][$key];                            M('Mxpic') -> save($temporary);                    }                    //排序和图片存在,子id不存在则为新增                    if(isset($data['pic'][$key]) && isset($value) && !empty($children_id[$key])){                        $temporary['pic'] = $data['pic'][$key];                        M('Mxpic') -> add($temporary);                    }                }            //证明没有上传            }else{                //临时值 组合数据                foreach($children_id as $key => $v){                    $temporary = [                    'id' => $v,                    'workorder' => $data['workorder'][$key],                    ];                    M('Mxpic') -> save($temporary);                }            }        }    }    //图片处理    public function pic($file){        $upload = new \Think\Upload(C('IMG_ATTRIBUTE'));        $upload->savePath = 'mxdesigner/';        $data = [];        if(is_array($file)){            //遍历上传图片            foreach($file as $key => $v){                //判断是否是多图上传:多图处理                if(count($v) !== count($v,1)){                        $temporary = $upload->upload([$v]);                        foreach($temporary as $k => $value){                            $data[$key][$k] = $value['savepath'].$value['savename'];                        }                }else{                    //这些是单图的处理                    $info = $upload->uploadOne($v);                    if($info){                        $data[$key] = $info['savepath'].$info['savename'];                    }                }            }            return $data;        }else{            $this -> getError($upload -> getError());        }    }

阅读全文
1 0
原创粉丝点击