php视频拍照上传头像功能实现代码分享


Posted in PHP onOctober 08, 2015

如果要在php中实现视频拍照我们需要借助于flash插件了,由flash拍出的确照片我们再通过php的$GLOBALS ['HTTP_RAW_POST_DATA']接受数据,然后保存成图片就可以了,下面我来介绍一下。
使用的是$GLOBALS ['HTTP_RAW_POST_DATA'],这个系统函数跟post很相似,但是$GLOBALS ['HTTP_RAW_POST_DATA']支持的数据格式更丰富些。
设计流程:
$GLOBALS ['HTTP_RAW_POST_DATA']传递照片数据流(二进制)?>打开一张空白图—>把数据流写进空白图片里面?判断是否是有效图片—完成。
注意传递照片的二进制流已经包含照片的尺寸大小,格式等等属性,时间上就是把手机图片信息传递到web端页面。
手机端一般使用flash切割照片大小,大家都知道图片和视频是由二进制流组成的,既然图片可以上传,那么视频能不能上传呢?原理是不是和手机拍照上传头像一样呢?自己可以去研究一下。
代码如下

/*
 * 上传图片类
 * @parameter; 用户ID
 * @date:2015-10-08
 * @author:cy
 * */
function UpImg($subdir){
// 设置存储路径
if(!empty($subdir)){
 $dirnow=getcwd();
 $folder =$dirnow."/www.php100.com/".$subdir;// folder where to save images
 if( !is_dir($folder) ) mkdir($folder);
// 图片命名
 $datenow=date('Ymd');
 $timenow=time();
 $image = $datenow.$timenow.'.jpg';
// 图片是否已存在
 $check = $folder . '/' . $image;
 if (file_exists($check)) {
 unlink($check);
 } else {
 $png = file_get_contents ( 'php://input' ) ? file_get_contents ( 'php://input' ) : gzuncompress ( $GLOBALS ['HTTP_RAW_POST_DATA'] );//得到post过来的二进制原始数据
 if(!empty($png)){
 $file = @fopen($folder."/".$image, "w");
   fwrite($file,$png);//写入 hzhuti.com
 fclose($file);//关闭
 // orignal image location
  $write_image = $folder . '/' . $image;
 }else{
 $msg = "没有数据流";
 }
 if(getimageInfo($write_image)){
  $msg = "上传成功";
 }else{$msg = "图片格式不正确";}
 }
}else{
 $msg = "参数错误";
}
 return $msg;
 }
/*
 * 检测图片是否合法
 * @parameter; 文件名
 * @date:2011-8-15
 * @author:cy
 * */
 function getimageInfo($imageName = '') {
  $imageInfo = getimagesize ( $imageName );
  if ($imageInfo !== false) {
   $imageType = strtolower ( substr ( image_type_to_extension ( $imageInfo [2] ), 1 ) );
//   $imageSize = filesize ( $imageInfo );
   return $info = array ('width' => $imageInfo [0], 'height' => $imageInfo [1], 'type' => $imageType, 'mine' => $imageInfo ['mine'] );
  } else {
   //不是 php100.com 合法的图片
   return false;
  } 
 }

在使用xml-rpc的时候,server端获取client数据,主要是通过php输入流input,而不是$_POST数组
根据上面几个探测,我们可以作出以下总结:
1、Content-Type取值为application/x-www-form-urlencoded时,php会将http请求body相应数据会 填入到数组$_POST,填入到$_POST数组中的数据是进行urldecode()解析的结果。(其实,除了该Content-Type,还有 multipart/form-data表示数据是表单数据,稍后我们介绍)
2、php://input数据,只要Content-Type不为multipart/form-data(该条件限制稍后会介绍)。那么php: //input数据与http entity body部分数据是一致的。该部分相一致的数据的长度由Content-Length指定。
3、仅当Content-Type为application/x-www-form-urlencoded且提交方法是POST方法时,$_POST数据与php://input数据才是”一致”(打上引号,表示它们格式不一致,内容一致)的。其它情况,它们都不一致。
4、php://input读取不到$_GET数据。是因为$_GET数据作为query_path写在http请求头部(header)的PATH字段,而不是写在http请求的body部分。
这也帮助我们理解了,为什么xml_rpc服务端读取数据都是通过file_get_contents(‘php://input', ‘r')。而不是从$_POST中读取,正是因为xml_rpc数据规格是xml,它的Content-Type是text/xml。

效果图:

php视频拍照上传头像功能实现代码分享

以上就是介绍了php是如何实现视频拍照上传头像功能的全部内容,希望对大家的学习有所帮助。

PHP 相关文章推荐
Windows下PHP5和Apache的安装与配置
Sep 05 PHP
快速配置PHPMyAdmin方法
Jun 05 PHP
destoon二次开发模板及调用语法汇总
Jun 21 PHP
php使用explode()函数将字符串拆分成数组的方法
Feb 17 PHP
PHP session文件独占锁引起阻塞问题解决方法
May 12 PHP
Smarty模板变量调节器用法分析
May 23 PHP
php计算多个集合的笛卡尔积实例详解
Feb 16 PHP
PHP new static 和 new self详解
Feb 19 PHP
PHP中让json_encode不自动转义斜杠“/”的方法
Feb 28 PHP
PHP实现图片压缩
Sep 09 PHP
Windows上php5.6操作mongodb数据库示例【配置、连接、获取实例】
Feb 13 PHP
PHP反射原理与用法深入分析
Sep 28 PHP
php+ajax 实现输入读取数据库显示匹配信息
Oct 08 #PHP
解决php的“It is not safe to rely on the system’s timezone settings”问题
Oct 08 #PHP
php 问卷调查结果统计
Oct 08 #PHP
JSON用法之将PHP数组转JS数组,JS如何接收PHP数组
Oct 08 #PHP
php开发微信支付获取用户地址
Oct 04 #PHP
浅谈使用PHP开发微信支付的流程
Oct 04 #PHP
8个必备的PHP功能开发
Oct 02 #PHP
You might like
PHP读取数据库并按照中文名称进行排序实现代码
2013/01/29 PHP
PHP中子类重载父类的方法【parent::方法名】
2016/05/06 PHP
js 实现复制到粘贴板的功能代码
2010/05/13 Javascript
asp.net+jquery滚动滚动条加载数据的下拉控件
2010/06/25 Javascript
拉动滚动条加载数据的jquery代码
2012/05/03 Javascript
JQuery操作Select的Options的Bug(IE8兼容性视图模式)
2013/04/21 Javascript
node.js中的http.get方法使用说明
2014/12/14 Javascript
jquery使用正则表达式验证email地址的方法
2015/01/22 Javascript
JavaScript动态插入CSS的方法
2015/12/10 Javascript
JavaScript类的写法
2016/09/17 Javascript
JavaScript之Date_动力节点Java学院整理
2017/06/28 Javascript
js canvas实现适用于移动端的百分比仪表盘dashboard
2017/07/18 Javascript
JavaScript实现无刷新上传预览图片功能
2017/08/02 Javascript
vue项目实现表单登录页保存账号和密码到cookie功能
2018/08/31 Javascript
vue.js 双层嵌套for遍历的方法详解, 类似php foreach()
2018/09/07 Javascript
JS滚轮控制图片缩放大小和拖动的实例代码
2018/11/20 Javascript
Vue框架TypeScript装饰器使用指南小结
2019/02/18 Javascript
ES6 Object方法扩展的应用实例分析
2019/06/25 Javascript
JS面向对象编程实现的拖拽功能案例详解
2020/03/03 Javascript
解决在Vue中使用axios POST请求变成OPTIONS的问题
2020/08/14 Javascript
JavaScript 获取滚动条位置并将页面滑动到锚点
2021/02/08 Javascript
NodeJS和浏览器中this关键字的不同之处
2021/03/03 NodeJs
200 行python 代码实现 2048 游戏
2018/01/12 Python
selenium+python自动化测试之多窗口切换
2019/01/23 Python
关于pytorch中全连接神经网络搭建两种模式详解
2020/01/14 Python
Python3.7.0 Shell添加清屏快捷键的实现示例
2020/03/23 Python
python适合做数据挖掘吗
2020/06/16 Python
Django 权限管理(permissions)与用户组(group)详解
2020/11/30 Python
利用python制作拼图小游戏的全过程
2020/12/04 Python
职专应届生求职信
2013/11/16 职场文书
职工运动会邀请函
2014/02/02 职场文书
大学生个人求职口试自我评价
2014/02/16 职场文书
企业文化理念标语
2014/06/10 职场文书
项目转让协议书
2014/10/27 职场文书
党的群众路线教育实践活动总结材料
2014/10/30 职场文书
学习经验交流会演讲稿
2015/11/02 职场文书