thinkphp 同时上传视频和图片,并对图片进行分组

来源:互联网 发布:3d展示软件 编辑:程序博客网 时间:2024/05/17 01:09

开发需求:APP端上传视频,同时上传视频封面+视频每隔10秒取帧图片(前端操作,这里只介绍处理上传功能),因为图片和视频保存路径不同,还有大小限制等,所以按tp原始文件稍修改了下!代码如下:

//APP上传多图片和视频    public function appupvideopic($m=1200,$s=300){        if(!$m)$m = 1200;//大图        if(!$s)$s = 300;//小图        $imagefile = array();        $videofile = array();        //将文件类进行分组(数组下标就没有优化了,大家用的时候可以再处理下)        foreach ($_FILES as $ks=>$vs){            //上传的是图片            if(strpos($vs['type'],'mage') == '1'){                $imagefile[$ks] = $vs;            }            //上传的是视频            if(strpos($vs['type'],'ideo') == '1'){                $videofile[$ks] = $vs;            }        }        $data = array();        $errmsg = '上传失败';        if($imagefile) {            $config = array(                'rootPath' => './Uploads/images/',                'savePath' => date('Ymd'),                'maxSize' => 21048576,                'saveName' => array('uniqid', ''),                'exts' => array('jpg', 'gif', 'png', 'jpeg'),                'autoSub' => true,                'subName' => 'a',            );            $upload = new Upload($config);            $info = $upload->upload($imagefile);            //开始上传            if ($info) {                $imgname_m = '';                $imgname_s = '';                $framename_m = '';                $framename_s = '';                foreach ($info as $k => $v) {                    $savePath = $v['savepath'];                    $saveName = $v['savename'];                    $imgPath = $savePath . $saveName;                    $imgPath_m = $this->thumb($m, $m, $imgPath);                    $imgPath_s = $this->thumb($s, $s, $imgPath);                    @unlink(C("UPLOAD_PATH") . 'images/' . $imgPath);//删除原图                    //为1上传的是封面,否则是视频帧截图集                    if (strpos($k, 'ramepic') == 1) {                        $framename_m .= $imgPath_m . ',';                        $framename_s .= $imgPath_s . ',';                    } else {                        $imgname_m .= $imgPath_m . ',';                        $imgname_s .= $imgPath_s . ',';                    }                }                $data['cover'] = trim($imgname_m, ',');                $data['covers'] = trim($imgname_s, ',');                $data['frame'] = trim($framename_m, ',');                $data['frames'] = trim($framename_s, ',');            }else{                $errmsg = $upload->getError();            }        }        if($videofile){            $config = array(                'rootPath' => './Uploads/video/',                'savePath' => date('Ymd'),                'maxSize' => 2145728000,//200M                'saveName' => array('uniqid',''),                'exts' => array('mp4', 'avi', 'mov', 'rmvb','wmv'),                'autoSub' => true,                'subName' => 'a',            );            $upload = new Upload($config);//            $infos = $upload->upload($videofile);            //开始上传            if ($infos) {                $infosa = $infos['file']['savepath'].$infos['file']['savename'];                $data['video'] = $infosa;            } else{                $errmsg = $upload->getError();            }        }        if($data){            return array('code'=>200,'msg'=>'上传成功','data'=>$data,);        }else{            return array('code'=>400,'msg'=>$errmsg,'data'=>'');        }    }

缩略图的也放上吧

  /* 生成缩略图方法@ h w 需要裁剪的宽高@ file 基于该图进行操作@ savefile 可自定义保存文件名称    @ type 表示裁剪类型 1=等比例缩放类型 2=缩放后填充类型 3=居中裁剪类型 4=左上角裁剪类型 5=右下角裁剪类型 6=固定尺寸缩放类型   */  private function thumb($h,$w,$file,$type=1,$savefile='',$savestyle = 1){     $abspath  = C('UPLOAD_PATH').'images/';     if(!file_exists($abspath.$file)){   return false; }else{   $img = new Image();   $img->open($abspath.$file);   $info = pathinfo($file);     if($savefile==''){     $savefile = ''; $savefile .= (isset($info['dirname']) && $info['dirname']!='') ? $info['dirname'].'/' : '';   if($savestyle == 1){   $savefile .= $info['filename'].'_'.$h.'_'.$w.'.'.$info['extension'];   }elseif($savestyle == 2){   $savefile .= $info['filename'].$w.'.'.$info['extension'];   }   } else {     $savefile = $savefile.'.'.$info['extension'];   }   $img->thumb($h,$w,$type)->save($abspath.$savefile);   return $savefile; }  }

写得很粗糙,这是一种思路吧!有问题可以留言


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