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
php下删除一篇文章生成的多个静态页面
Aug 08 PHP
PHP文件上传原理简单分析
May 29 PHP
php Smarty初体验二 获取配置信息
Aug 08 PHP
PHP中使用imagick生成PSD文件缩略图教程
Jan 26 PHP
php上传中文文件名乱码问题处理方案
Feb 03 PHP
Windows下编译PHP5.4和xdebug全记录
Apr 03 PHP
Laravel中Facade的加载过程与原理详解
Sep 22 PHP
PHP中创建和编辑Excel表格的方法
Sep 13 PHP
PHP检测一个数组有没有定义的方法步骤
Jul 20 PHP
解决在laravel中auth建立时候遇到的问题
Oct 15 PHP
laravel 解决后端无法获取到前端Post过来的值问题
Oct 22 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基本函数汇总
2015/07/09 PHP
php字符串操作针对负值的判断分析
2016/07/28 PHP
详解Yaf框架PHPUnit集成测试方法
2017/12/27 PHP
永不消失的title提示代码
2007/02/15 Javascript
js控制框架刷新
2008/08/01 Javascript
javascript preload&lazy load
2010/05/13 Javascript
js判断浏览器类型的方法
2013/08/07 Javascript
用Jquery选择器计算table中的某一列某一行的合计
2014/08/13 Javascript
Labelauty?jQuery单选框/复选框美化插件分享
2015/09/26 Javascript
javascript实现加载xml文件的方法
2015/11/24 Javascript
jquery动态遍历Json对象的属性和值的方法
2016/07/27 Javascript
多个上传文件用js验证文件的格式和大小的方法(推荐)
2017/03/09 Javascript
Vuex和前端缓存的整合策略详解
2017/05/09 Javascript
详解用vue编写弹出框组件
2017/07/04 Javascript
vue.js国际化 vue-i18n插件的使用详解
2017/07/07 Javascript
JS实现基于拖拽改变物体大小的方法
2018/01/23 Javascript
Vue2.0系列之过滤器的使用
2018/03/01 Javascript
浅析Vue 生命周期
2018/06/21 Javascript
微信小程序实现文字无限轮播效果
2018/12/28 Javascript
el-table树形表格表单验证(列表生成序号)
2020/05/31 Javascript
Vue2.0 ES6语法降级ES5的操作
2020/10/30 Javascript
Python 稀疏矩阵-sparse 存储和转换
2017/05/27 Python
Python实现的查询mysql数据库并通过邮件发送信息功能
2018/05/17 Python
python实现寻找最长回文子序列的方法
2018/06/02 Python
pycharm不能运行.py文件的解决方法
2020/02/12 Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
2020/04/14 Python
Python3.8.2安装包及安装教程图文详解(附安装包)
2020/11/28 Python
CSS3教程(6):创建网站多列
2009/04/02 HTML / CSS
html5 worker 实例(一) 为什么测试不到效果
2013/06/24 HTML / CSS
Shop Apotheke瑞士:您的健康与美容网上商店
2019/10/09 全球购物
甜品蛋糕店创业计划书范文
2014/02/06 职场文书
高考励志标语
2014/06/05 职场文书
三年级上册科学教学计划
2015/01/21 职场文书
幼儿园开学通知
2015/04/24 职场文书
PYTHON InceptionV3模型的复现详解
2022/05/06 Python
MySQL transaction事务安全示例讲解
2022/06/21 MySQL