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中文汉字验证码
Apr 08 PHP
PHP+Javascript实现在线拍照功能实例
Jul 18 PHP
程序员的表白神器“520”大声喊出来
May 20 PHP
常用PHP数组排序函数归纳
Aug 08 PHP
PHP导出带样式的Excel示例代码
Aug 28 PHP
php基于curl实现随机ip地址抓取内容的方法
Oct 11 PHP
php函数mkdir实现递归创建层级目录
Oct 27 PHP
PHP基于Closure类创建匿名函数的方法详解
Aug 17 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
Feb 07 PHP
浅谈PHP SHA1withRSA加密生成签名及验签
Mar 18 PHP
PHP超级全局变量【$GLOBALS,$_SERVER,$_REQUEST等】用法实例分析
Dec 11 PHP
laravel5.6 框架操作数据 Eloquent ORM用法示例
Jan 26 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 echo 输出字符串函数详解
2010/05/13 PHP
phpExcel导出大量数据出现内存溢出错误的解决方法
2013/02/28 PHP
mac系统下安装多个php并自由切换的方法详解
2017/04/21 PHP
jquery cookie的用法总结
2013/11/18 Javascript
点击页面其它地方隐藏该div的两种思路
2013/11/18 Javascript
JavaScript设置获取和设置属性的方法
2015/03/04 Javascript
JavaScript创建一个object对象并操作对象属性的用法
2015/03/23 Javascript
jquery实现TAB选项卡鼠标经过带延迟效果的方法
2015/07/27 Javascript
vue通过指令(directives)实现点击空白处收起下拉框
2018/12/06 Javascript
Vue数字输入框组件示例代码详解
2020/01/15 Javascript
vue实现瀑布流组件滑动加载更多
2020/03/10 Javascript
JavaScript实现随机点名程序
2020/03/25 Javascript
微信小程序实现组件顶端固定或底端固定效果(不随滚动而滚动)
2020/04/09 Javascript
JavaScript setTimeout()基本用法有哪些
2020/11/04 Javascript
Vue路由权限控制解析
2020/11/09 Javascript
Python collections模块实例讲解
2014/04/07 Python
在Linux下使用Python的matplotlib绘制数据图的教程
2015/06/11 Python
Windows下Python2与Python3两个版本共存的方法详解
2017/02/12 Python
Windows下安装Django框架的方法简明教程
2018/03/28 Python
tensorflow 使用flags定义命令行参数的方法
2018/04/23 Python
python 实现倒排索引的方法
2018/12/25 Python
python 读取文件并把矩阵转成numpy的两种方法
2019/02/12 Python
Pyqt清空某一个QTreeewidgetItem下的所有分支方法
2019/06/17 Python
Python实现个人微信号自动监控告警的示例
2019/07/03 Python
Python参数类型以及常见的坑详解
2019/07/08 Python
python脚本调用iftop 统计业务应用流量的思路详解
2019/10/11 Python
python调用API接口实现登陆短信验证
2020/05/10 Python
Jupyter Notebook安装及使用方法解析
2020/11/12 Python
HTML5全屏(Fullscreen)API详细介绍
2015/04/24 HTML / CSS
超市后勤自我鉴定
2014/01/17 职场文书
教师简历自我评价
2014/02/03 职场文书
2014学校庆三八妇女节活动总结
2014/03/01 职场文书
文明生主要事迹
2014/05/25 职场文书
在校生证明
2015/06/17 职场文书
JavaScript流程控制(循环)
2021/12/06 Javascript
【海涛七七解说】DCG第二周:DK VS 天禄
2022/04/01 DOTA