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 相关文章推荐
一个很方便的 XML 类!!原创的噢
Oct 09 PHP
十天学会php之第十天
Oct 09 PHP
PHP 高手之路(二)
Oct 09 PHP
PHP中的session永不过期的解决思路及实现方法分享
Apr 20 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十)
Jun 24 PHP
php模拟服务器实现autoindex效果的方法
Mar 10 PHP
CI框架AR操作(数组形式)实现插入多条sql数据的方法
May 18 PHP
PHP 5.6.11 访问SQL Server2008R2的几种情况详解
Aug 08 PHP
PHP实现时间比较和时间差计算的方法示例
Jul 24 PHP
PHP异常处理定义与使用方法分析
Jul 25 PHP
Thinkphp 框架基础之源码获取、环境要求与目录结构分析
Apr 27 PHP
php解析非标准json、非规范json的方式实例
Dec 10 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/08/02 PHP
非常好用的Zend Framework分页类
2014/06/25 PHP
详解PHP中array_rand函数的使用方法
2016/09/11 PHP
php中输出json对象的值(实现方法)
2018/03/07 PHP
PHP的mysqli_rollback()函数讲解
2019/01/23 PHP
Laravel第三方包报class not found的解决方法
2019/10/13 PHP
JavaScript中的Document文档对象
2008/01/16 Javascript
jQuery中实现动画效果的基本操作介绍
2013/04/16 Javascript
鼠标移到图片上变大显示而不是放大镜效果
2014/06/15 Javascript
jquery实现勾选复选框触发事件给input赋值
2015/02/01 Javascript
jQuery源码解读之removeAttr()方法分析
2015/02/20 Javascript
ubuntu下安装nodejs以及升级的办法
2015/05/08 NodeJs
Augularjs-起步详解
2016/07/08 Javascript
简单理解vue中el、template、replace元素
2016/10/27 Javascript
layui分页效果实现代码
2017/05/19 Javascript
浅谈Vue.js中的v-on(事件处理)
2017/09/05 Javascript
基于 Vue 实现一个酷炫的 menu插件
2017/11/14 Javascript
Angular4 组件通讯方法大全(推荐)
2018/07/12 Javascript
深入理解JavaScript的值传递和引用传递
2018/10/24 Javascript
微信小程序实现录音时的麦克风动画效果实例
2019/05/18 Javascript
vue开发移动端底部导航条功能
2020/04/08 Javascript
Vue中computed及watch区别实例解析
2020/08/01 Javascript
[01:54]TI珍贵瞬间系列(五):压力
2020/08/29 DOTA
Python中splitlines()方法的使用简介
2015/05/20 Python
Scrapy的简单使用教程
2017/10/24 Python
Python实现计算圆周率π的值到任意位的方法示例
2018/05/08 Python
Python hashlib加密模块常用方法解析
2019/12/18 Python
利用keras加载训练好的.H5文件,并实现预测图片
2020/01/24 Python
python小技巧——将变量保存在本地及读取
2020/11/13 Python
html5简介_动力节点Java学院整理
2017/07/07 HTML / CSS
开学典礼策划方案
2014/05/28 职场文书
护理见习报告范文
2014/11/03 职场文书
企业百日安全活动总结
2015/05/07 职场文书
考生诚信考试承诺书(2016版)
2016/03/25 职场文书
详解PHP服务器如何在有限的资源里最大提升并发能力
2021/05/25 PHP
python数字转对应中文的方法总结
2021/08/02 Python