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 相关文章推荐
汉字转化为拼音(php版)
Oct 09 PHP
聊天室php&mysql(二)
Oct 09 PHP
比较时间段一与时间段二是否有交集的php函数
May 31 PHP
支持中文字母数字、自定义字体php验证码代码
Feb 27 PHP
php获取客户端电脑屏幕参数的方法
Jan 09 PHP
程序员的表白神器“520”大声喊出来
May 20 PHP
PHP sleep()函数, usleep()函数
Aug 25 PHP
YII中Ueditor富文本编辑器文件和图片上传的配置图文教程
Mar 15 PHP
Redis在Laravel项目中的应用实例详解
Aug 11 PHP
CodeIgniter框架数据库基本操作示例
May 24 PHP
PHP strripos函数用法总结
Feb 11 PHP
thinkphp5.1框架中容器(Container)和门面(Facade)的实现方法分析
Aug 05 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
phpfans留言版用到的数据操作类和分页类
2007/01/04 PHP
PHP获取远程http或ftp文件的md5值的方法
2019/04/15 PHP
Laravel 将数据表的数据导出,并生成seeds种子文件的方法
2019/10/09 PHP
为你的 Laravel 验证器加上多验证场景的实现
2020/04/07 PHP
JavaScipt中的Math.ceil() 、Math.floor() 、Math.round() 三个函数的理解
2010/04/29 Javascript
基于jquery的仿百度的鼠标移入图片抖动效果
2010/09/17 Javascript
javascript抖动元素的小例子
2013/10/28 Javascript
JavaScript改变HTML元素的样式改变CSS及元素属性
2013/11/12 Javascript
JavaScript字符串对象的concat方法实例(用于连接两个或多个字符串)
2014/10/16 Javascript
js日期范围初始化得到前一个月日期的方法
2015/05/05 Javascript
JQuery实现样式设置、追加、移除与切换的方法
2015/06/11 Javascript
JS取数字小数点后两位或n位的简单方法
2016/10/24 Javascript
Ionic + Angular.js实现图片轮播的方法示例
2017/05/21 Javascript
浅析vue中常见循环遍历指令的使用 v-for
2018/04/18 Javascript
webpack开发环境和生产环境的深入理解
2018/11/08 Javascript
读懂CommonJS的模块加载
2019/04/19 Javascript
jquery实现二级导航下拉菜单效果实例
2019/05/14 jQuery
vue-router 中 meta的用法详解
2019/11/01 Javascript
简单总结Python中序列与字典的相同和不同之处
2016/01/19 Python
Python中Selenium模拟JQuery滑动解锁实例
2017/07/26 Python
基于Django filter中用contains和icontains的区别(详解)
2017/12/12 Python
Python多线程中阻塞(join)与锁(Lock)使用误区解析
2018/04/27 Python
Python多进程池 multiprocessing Pool用法示例
2018/09/07 Python
使用pycharm设置控制台不换行的操作方法
2019/01/19 Python
如何使用python实现模拟鼠标点击
2020/01/06 Python
PyCharm 光标变成黑块的解决方式
2021/02/06 Python
自荐书封面下载
2013/11/29 职场文书
学生自我鉴定模板
2013/12/30 职场文书
《金子》教学反思
2014/04/13 职场文书
电影小兵张嘎观后感
2015/06/03 职场文书
大学生,三分钟即兴演讲稿
2019/07/22 职场文书
深入理解python多线程编程
2021/04/18 Python
PHP实现创建以太坊钱包转账等功能
2021/04/21 PHP
教你怎么用Python实现多路径迷宫
2021/04/29 Python
Dashboard管理Kubernetes集群与API访问配置
2022/04/01 Servers
MySQL下载安装配置详细教程 附下载资源
2022/09/23 MySQL