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 相关文章推荐
优化NFR之一 --MSSQL Hello Buffer Overflow
Oct 09 PHP
解决phpmyadmin中文乱码问题。。。
Jan 18 PHP
应用开发中涉及到的css和php笔记分享
Aug 02 PHP
利用PHP实现图片等比例放大和缩小的方法详解
Jun 06 PHP
PHP利用MySQL保存session的实现思路及示例代码
Sep 09 PHP
PHP实现简单汉字验证码
Jul 28 PHP
PHP读取XML格式文件的方法总结
Feb 27 PHP
一个实用的php验证码类
Jul 06 PHP
PHP实现基于栈的后缀表达式求值功能
Nov 10 PHP
PHP合并两个或多个数组的方法
Jan 20 PHP
PHP-FPM的配置与优化讲解
Mar 15 PHP
laravel 验证错误信息到 blade模板的方法
Sep 29 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
模拟OICQ的实现思路和核心程序(一)
2006/10/09 PHP
PHP的ASP防火墙
2006/10/09 PHP
PHP foreach循环使用详解与实例代码
2010/05/08 PHP
PHP定时执行计划任务的多种方法小结
2011/12/19 PHP
解决laravel 5.1报错:No supported encrypter found的办法
2017/06/07 PHP
PHP实现一个多功能购物网站的案例
2017/09/13 PHP
硬盘浏览程序,保存成网页格式便可使用
2006/12/03 Javascript
jquery append()方法与html()方法的区别及使用介绍
2014/08/01 Javascript
JS中实现简单Formatter函数示例代码
2014/08/19 Javascript
JavaScript数组随机排列实现随机洗牌功能
2015/03/19 Javascript
简介JavaScript中用于处理正切的Math.tan()方法
2015/06/15 Javascript
Node.js websocket使用socket.io库实现实时聊天室
2017/02/20 Javascript
JavaScript实现二叉树定义、遍历及查找的方法详解
2017/12/20 Javascript
不到200行 JavaScript 代码实现富文本编辑器的方法
2018/01/03 Javascript
Node.js命令行/批处理中如何更改Linux用户密码浅析
2018/07/22 Javascript
微信小程序内拖动图片实现移动、放大、旋转的方法
2018/09/04 Javascript
pyqt5之将textBrowser的内容写入txt文档的方法
2019/06/21 Python
python中for循环把字符串或者字典添加到列表的方法
2019/07/20 Python
pyhton中__pycache__文件夹的产生与作用详解
2019/11/24 Python
Python实现隐马尔可夫模型的前向后向算法的示例代码
2019/12/31 Python
pytorch实现focal loss的两种方式小结
2020/01/02 Python
详解Django配置JWT认证方式
2020/05/09 Python
关于css兼容性问题及一些常见问题汇总
2016/05/03 HTML / CSS
html5 canvas实现给图片添加平铺水印
2019/08/20 HTML / CSS
印尼极简主义和实惠的在线家具店:Fabelio
2019/03/27 全球购物
Fossil德国官网:化石手表、手袋、珠宝及配件
2019/12/07 全球购物
经济学博士求职自荐信范文
2013/11/23 职场文书
银行优秀员工事迹材料
2014/05/29 职场文书
节能环保口号
2014/06/12 职场文书
岗位聘任报告
2015/03/02 职场文书
博士生专家推荐信
2015/03/25 职场文书
六一晚会主持词开场白
2015/05/28 职场文书
新农村建设指导员工作总结
2015/08/13 职场文书
CSS3 制作精美的定价表
2021/04/06 HTML / CSS
PostGIS的安装与入门使用指南
2022/01/18 PostgreSQL
python全面解析接口返回数据
2022/02/12 Python