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
- thinkphp 同时上传视频和图片,并对图片进行分组
- ThinkPHP中同时上传视频和图片的简单处理方法
- 使用MultipartEntity对文字、图片、视频进行综合上传
- 使用MultipartEntity对文字、图片、视频进行综合上传
- 使用MultipartEntity对文字、图片、视频进行综合上传
- 使用MultipartEntity对文字、图片、视频进行综合上传
- ThinkPHP 上传图片,并显示缩略图
- thinkphp上传图片并jquery预览
- ThinkPHP上传图片并压缩为缩略图
- 同时上传图片和图片属性
- [IOS]从相册获取图片和视频进行上传
- thinkphp 同时上传多张图片文件名重复问题
- android 视频和图片切换并进行自动轮播
- java 对视频和图片进行加密解密
- java对图片进行缩略和得到视频的缩略图
- iOS 上传图片和视频
- 上传本地视频和图片
- 利用UEditor进行上传图片、视频
- js接收thinkphp传递的参数
- RHEL环境搭建-NginxTomcatJavaDubboRabbitMQRedisNexusMySQL
- OC : NSNumberFormatter ( 数字格式化)
- 0824 Java基础知识小结
- Day12-41.break and continue
- thinkphp 同时上传视频和图片,并对图片进行分组
- Lucene实践(一):全文检索的基本原理
- android打开和隐藏软键盘
- python高阶进程2--正则表达式
- linux定时计划
- 区域点击之八个方向 单击,双击
- elasticSearch 2.0搭建集群注意事项
- Android7.0后台服务器更新之后使用Intent跳转至APK安装页
- Android应用如何触发应用出现在打开文件方式的列表中