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 相关文章推荐
第十五节--Zend引擎的发展
Nov 16 PHP
php mysql数据库操作分页类
Jun 04 PHP
php数组函数序列之end() - 移动数组内部指针到最后一个元素,并返回该元素的值
Oct 31 PHP
php在线代理转向代码
May 05 PHP
深入for,while,foreach遍历时间比较的详解
Jun 08 PHP
coreseek 搜索英文的问题详解
Jun 08 PHP
php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
Sep 28 PHP
利用PHP将部分内容用星号替换
Apr 21 PHP
PHP微信开发之微信录音临时转永久存储
Jan 26 PHP
php7函数,声明,返回值等新特性介绍
May 25 PHP
PHP实现websocket通信的方法示例
Aug 28 PHP
PHP中SESSION过期设置
Mar 09 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
再次研究下cache_lite
2007/02/14 PHP
php取得字符串首字母的方法
2015/03/25 PHP
PHP中SERIALIZE和JSON的序列化与反序列化操作区别分析
2016/10/11 PHP
PHP常用函数之获取汉字首字母功能示例
2019/10/21 PHP
正则表达式搭配js轻松处理json文本方便而老古
2013/02/17 Javascript
JS中Iframe之间传值及子页面与父页面应用
2013/03/11 Javascript
Javascript计算两个marker之间的距离(Google Map V3)
2013/04/26 Javascript
JavaScript网页定位详解
2014/01/13 Javascript
jQuery幻灯片带缩略图轮播效果代码分享
2015/08/17 Javascript
纯js代码实现简单计算器
2015/12/02 Javascript
JSON遍历方式实例总结
2015/12/07 Javascript
node.js 动态执行脚本
2016/06/02 Javascript
如何制作幻灯片(代码分享)
2017/01/06 Javascript
深入浅析JS中的严格模式
2018/06/04 Javascript
vue 右键菜单插件 简单、可扩展、样式自定义的右键菜单
2018/11/29 Javascript
有趣的JavaScript隐式类型转换操作实例分析
2020/05/02 Javascript
JavaScript使用prototype属性实现继承操作示例
2020/05/22 Javascript
[02:16]深扒TI7聊天轮盘语音出处2
2017/05/11 DOTA
Python 开发Activex组件方法
2009/11/08 Python
python Django框架实现自定义表单提交
2016/03/25 Python
浅析python中的分片与截断序列
2016/08/09 Python
Python字典数据对象拆分的简单实现方法
2017/12/05 Python
python 3.7.4 安装 opencv的教程
2019/10/10 Python
python滑块验证码的破解实现
2019/11/10 Python
amazeui页面分析之登录页面的示例代码
2020/08/25 HTML / CSS
阿联酋团购网站:Groupon阿联酋
2016/10/14 全球购物
Maison Lab荷兰:名牌Outlet购物
2018/08/10 全球购物
JD Sports比利时官网:英国领先的运动鞋和运动服饰零售商
2018/10/10 全球购物
演讲稿怎么写才完美
2014/01/02 职场文书
家长寄语大全
2014/04/02 职场文书
镇党政领导班子民主生活会思想汇报
2014/10/11 职场文书
公务员保密工作承诺书
2015/05/04 职场文书
初中班主任心得体会
2016/01/07 职场文书
python本地文件服务器实例教程
2021/05/02 Python
Python爬取用户观影数据并分析用户与电影之间的隐藏信息!
2021/06/29 Python
通过shell脚本对mysql的增删改查及my.cnf的配置
2021/07/07 MySQL