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 相关文章推荐
桌面中心(一)创建数据库
Oct 09 PHP
一个数据采集类
Feb 14 PHP
php邮件发送,php发送邮件的类
Mar 24 PHP
PHP统计目录大小的自定义函数分享
Nov 18 PHP
PHP使用xmllint命令处理xml与html的方法
Dec 15 PHP
php使用get_class_methods()函数获取分类的方法
Jul 20 PHP
Yii2框架BootStrap样式的深入理解
Nov 07 PHP
PHP实现二维数组按某列进行排序的方法
Nov 18 PHP
PHP全功能无变形图片裁剪操作类与用法示例
Jan 10 PHP
PHP设计模式之抽象工厂模式实例分析
Mar 25 PHP
PHP过滤器 filter_has_var() 函数用法实例分析
Apr 23 PHP
一次项目中Thinkphp绕过禁用函数的实战记录
Nov 17 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中Session的概念
2006/10/09 PHP
PHP数据对象PDO操作技巧小结
2016/09/27 PHP
用javascript动态调整iframe高度的方法
2007/03/06 Javascript
分析 JavaScript 中令人困惑的变量赋值
2007/08/13 Javascript
Js基础学习资料
2010/11/23 Javascript
jQuery的学习步骤
2011/02/23 Javascript
浏览器兼容console对象的简要解决方案分享
2013/10/24 Javascript
JS执行删除前的判断代码
2014/02/18 Javascript
D3.js 从P元素的创建开始(显示可加载数据)
2014/10/30 Javascript
javascript跨域原因以及解决方案分享
2015/04/08 Javascript
原生js页面滚动延迟加载图片
2015/12/20 Javascript
javascript基础语法——全面理解变量和标识符
2016/06/02 Javascript
深入浅析knockout源码分析之订阅
2016/07/12 Javascript
AngularJS入门教程之ng-checked 指令详解
2016/08/01 Javascript
js当前页面登录注册框,固定div,底层阴影的实例代码
2016/10/04 Javascript
jQuery实现Table表格隔行变色及高亮显示当前选择行效果示例
2017/02/14 Javascript
基于js中style.width与offsetWidth的区别(详解)
2017/11/12 Javascript
关于Angularjs中跨域设置白名单问题
2018/04/17 Javascript
微信小程序实现文字无限轮播效果
2018/12/28 Javascript
python使用内存zipfile对象在内存中打包文件示例
2014/04/30 Python
跟老齐学Python之折腾一下目录
2014/10/24 Python
Python图形绘制操作之正弦曲线实现方法分析
2017/12/25 Python
python安装twisted的问题解析
2018/08/21 Python
Python实现将多个空格换为一个空格.md的方法
2018/12/20 Python
Flask模板引擎之Jinja2语法介绍
2019/06/26 Python
pygame编写音乐播放器的实现代码示例
2019/11/19 Python
详解HTML5中的标签
2015/06/19 HTML / CSS
基于html5绘制圆形多角图案
2016/04/21 HTML / CSS
用Python写一个for循环的例子
2016/07/19 面试题
往来会计岗位职责
2013/12/19 职场文书
建筑公司员工自我鉴定
2014/04/08 职场文书
护理专业毕业生自荐信
2014/06/15 职场文书
地理信息科学专业推荐信
2014/09/08 职场文书
司考复习计划
2015/01/19 职场文书
小区保洁员岗位职责
2015/04/10 职场文书
酒店工程部的岗位职责汇总大全
2019/10/23 职场文书