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&java(三)
Oct 09 PHP
Apache2 httpd.conf 中文版
Nov 17 PHP
php获取url字符串截取路径的文件名和扩展名的函数
Jan 22 PHP
php分页思路以及在ZF中的使用
May 30 PHP
php变量范围介绍
Oct 15 PHP
如何利用php array_multisort函数 对数据库结果进行复杂排序
Jun 08 PHP
php通过记录IP来防止表单重复提交方法分析
Dec 16 PHP
php fread读取文件注意事项
Sep 24 PHP
浅谈PHP的数据库接口和技术
Dec 09 PHP
Yii2实现UploadedFile上传文件示例
Feb 15 PHP
Laravel 验证码认证学习记录小结
Dec 20 PHP
linux mint下安装phpstorm2020包括JDK部分的教程详解
Sep 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 图像函数大举例(非原创)
2009/06/20 PHP
推荐10个提供免费PHP脚本下载的网站
2014/12/31 PHP
Symfony2框架创建项目与模板设置实例详解
2016/03/17 PHP
PHP基于ORM方式操作MySQL数据库实例
2017/06/21 PHP
PC端微信扫码支付成功之后自动跳转php版代码
2017/07/07 PHP
js DOM 元素ID就是全局变量
2012/09/20 Javascript
JS获取当前网址、主机地址项目根路径
2013/11/19 Javascript
js的正则test,match,exec详细解析
2014/01/29 Javascript
js实现的牛顿摆效果
2015/03/31 Javascript
javascript数据结构之双链表插入排序实例详解
2015/11/25 Javascript
js自定义select下拉框美化特效
2016/05/12 Javascript
实例详解jQuery的无new构建
2016/08/02 Javascript
如何制作幻灯片(代码分享)
2017/01/06 Javascript
js手机号4位显示空格,银行卡每4位显示空格效果
2017/03/23 Javascript
js a标签点击事件
2017/03/30 Javascript
JS常见创建类的方法小结【工厂方式,构造器方式,原型方式,联合方式等】
2017/04/01 Javascript
详解wow.js中各种特效对应的类名
2017/09/13 Javascript
解决循环中setTimeout执行顺序的问题
2018/06/20 Javascript
微信小程序实现下拉刷新动画
2019/06/21 Javascript
Python升级提示Tkinter模块找不到的解决方法
2014/08/22 Python
Python使用Matplotlib实现雨点图动画效果的方法
2017/12/23 Python
Python科学计算包numpy用法实例详解
2018/02/08 Python
解决django前后端分离csrf验证的问题
2019/02/03 Python
django中使用POST方法获取POST数据
2019/08/20 Python
Python random库使用方法及异常处理方案
2020/03/02 Python
基于python调用jenkins-cli实现快速发布
2020/08/14 Python
Python爬虫逆向分析某云音乐加密参数的实例分析
2020/12/04 Python
CSS3的新特性介绍
2008/10/31 HTML / CSS
俄罗斯韩国化妆品网上商店:Cosmasi.ru
2019/10/31 全球购物
意大利和国际最佳时尚品牌:Drestige
2019/12/28 全球购物
Prototype如何实现页面局部定时刷新
2013/08/06 面试题
财务管理制度范本
2015/08/04 职场文书
养成教育工作总结
2015/08/13 职场文书
师德培训心得体会2016
2016/01/09 职场文书
2016应届毕业生就业指导课心得体会
2016/01/15 职场文书
检讨书格式
2019/04/25 职场文书