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
与数据库连接
Oct 09 PHP
PHP开发过程中常用函数收藏
Dec 14 PHP
php 自写函数代码 获取关键字 去超链接
Feb 08 PHP
浅谈php serialize()与unserialize()的用法
Jun 05 PHP
php对二维数组按指定键值key排序示例代码
Nov 26 PHP
浅谈PHP中JSON数据操作
Jul 01 PHP
PHP封装的字符串加密解密函数
Dec 18 PHP
PHP实现的线索二叉树及二叉树遍历方法详解
Apr 25 PHP
php安装php_rar扩展实现rar文件读取和解压的方法
Nov 17 PHP
yii2.0整合阿里云oss上传单个文件的示例
Sep 19 PHP
分享8个Laravel模型时间戳使用技巧小结
Feb 12 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通用检测函数集合
2011/02/08 PHP
php 数组的一个悲剧?
2011/05/11 PHP
免费手机号码归属地API查询接口和PHP使用实例分享
2014/04/10 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
php递归函数怎么用才有效
2018/02/24 PHP
PHP函数积累总结
2019/03/19 PHP
php实现的顺序线性表示例
2019/05/04 PHP
Laravel重定向,a链接跳转,控制器跳转示例
2019/10/22 PHP
TP5框架实现上传多张图片的方法分析
2020/03/29 PHP
js定时器怎么写?就是在特定时间执行某段程序
2013/10/11 Javascript
js实现简单的购物车有图有代码
2014/05/26 Javascript
EasyUI,点击开启编辑框,并且编辑框获得焦点的方法
2015/03/01 Javascript
jQuery创建自定义的选择器用以选择高度大于100的超链接实例
2015/03/18 Javascript
JavaScript中setFullYear()方法的使用详解
2015/06/11 Javascript
Angularjs中UI Router的使用方法
2016/05/14 Javascript
Nodejs之http的表单提交
2017/07/07 NodeJs
详解React-Native全球化多语言切换工具库react-native-i18n
2017/11/03 Javascript
判断div滑动到底部的scroll实例代码
2017/11/15 Javascript
vue axios登录请求拦截器
2018/04/02 Javascript
JavaScript实现alert弹框效果
2020/11/19 Javascript
Python读写Json涉及到中文的处理方法
2016/09/12 Python
Python实现统计代码行的方法分析
2017/07/12 Python
Python安装selenium包详细过程
2019/07/23 Python
手机使用python操作图片文件(pydroid3)过程详解
2019/09/25 Python
Pytest mark使用实例及原理解析
2020/02/22 Python
python实现ping命令小程序
2020/12/28 Python
Python+MySQL随机试卷及答案生成程序的示例代码
2021/02/01 Python
如何开发安全的AJAX应用
2014/03/26 面试题
会计专业毕业生自我评价
2013/09/25 职场文书
你懂得怎么写自荐信吗?
2013/12/27 职场文书
庆六一活动总结
2014/08/29 职场文书
庆七一宣传标语
2014/10/08 职场文书
自查自纠工作情况报告
2014/10/29 职场文书
python关于集合的知识案例详解
2021/05/30 Python
Golang中channel的原理解读(推荐)
2021/10/16 Golang
python使用BeautifulSoup 解析HTML
2022/04/24 Python