项目中用户中心用的是ucenter,需要直接把开放平台的用户图像保存到本系统,uc自带的uc_avatar方法无法满足需求,通过用 SocketSniff对该flash上传图片抓包分析,该flash先把用户选择的图片上传到ucenter根目录的data/tmp目录下,然后返回 地址,用户选择区域后,生成三张图片的16进制代码,post给ucenter,就完成了用户的图像保存。知道了原理,程序就好写了。

在项目目录中的uc_client文件夹中的client.php增加一个uc_avatar_code函数,作用是返回input

1 function uc_avatar_code($uid, $type = 'virtual', $returnhtml = 1){
2     $uid = intval($uid);
3     $uc_input = uc_api_input("uid=$uid");
4     $input =str_replace('25', '', $uc_input);
5     return $input;
6 }

项目是用thinkPHP开发,下面是主要代码,其中checkTitle为php判断文件类型中 的方法,由于整个过程可能会比较耗时,修改用户图像放到后端消息队列处理,先把用户的在开放平台的用户图像,保存在Public/tmp/文件夹下,名 为$uid的文件,没有扩展名,直接下载的,不处理是不知道扩展名的。保存图像只需要请求saveOpenFace方法,加上用户id,即可保存用户图 像。

view source print ?
01 /*
02      * 保存开放平台用户图像到uc
03      *
04      * @uid : 用户id
05      * */
06     public function saveOpenFace(){
07         $uid = intval($_GET['id']);
08         $path = 'Public/tmp/';
09         $local = $path.$uid;       
10         $suffix = checkTitle($local);
11         $file = $local.'.'.$suffix;
12         rename($local,$file);
13         import("ORG.Util.Image");
14         import("ORG.Net.Snoopy");
15         $Image = new Image();
16         $Snoopy = new Snoopy();
17         $imgB = $path.'b_'.$uid.'.'.$suffix;
18         $imgM = $path.'m_'.$uid.'.'.$suffix;
19         $imgS = $path.'s_'.$uid.'.'.$suffix;
20         $Image->img2thumb($file,$imgB,200,200,1);
21         $Image->img2thumb($file,$imgM,120,120,1);
22         $Image->img2thumb($file,$imgS,48,48,1);
23         $input = uc_avatar_code($uid);     
24         $formvars["avatar1"] = $this->imgTo16Code($imgB);
25         $formvars["avatar2"] = $this->imgTo16Code($imgM);
26         $formvars["avatar3"] = $this->imgTo16Code($imgS);
27         $action = C('UC_HOST').'/index.php?m=user&inajax=1&a=rectavatar&appid=1&input='.$input.'&avatartype=virtual';
28         $Snoopy->submit($action,$formvars);
29         unlink($file);
30         unlink($imgB);
31         unlink($imgM);
32         unlink($imgS);
33         echo true; 
34     }
35     /*
36      * 把图片转换成16进制
37      * @file : 文件路径
38      * */
39     public function imgTo16Code($filename){
40         $file = file_get_contents($filename);
41         $code = strtoupper(bin2hex($file));
42         return $code;
43     }

PS:由于用的消息队列,后端是程序提交,POST提交用的Snoopy,伪造HTTP_USER_AGENT老是不成功,而无法提交,暂时把验 证注释了,有时间在看看,注释的文件为ucenter/model/base.php84行即//exit('Access denied for agent changed');

转载于:https://www.cnblogs.com/murongshuai/p/4626080.html

ucenter用户中心头像修改,不使用自带方法,不使用flash 转相关推荐

  1. Flask博客开发实战-用户中心实现修改个人信息功能

    用户中心实现修改个人信息功能 该功能的实现在做用户管理的时候其实我们已经写过了,这里其实仅仅只需要做的是获取到当前用户,允许用户登录后修改自己用户信息就可以了! 补充User的模型数据 gexing ...

  2. android 用户中心布局,android用户中心头像选择功能的方法实现-Go语言中文社区

    实现总体思路:主要采用startActivityForResult(intent, 0x111)和setResult(0x111, intent)方法.并且,在MainActivity中实现 onAc ...

  3. android用户中心头像选择功能的方法实现

    实现总体思路:主要采用startActivityForResult(intent, 0x111)和setResult(0x111, intent)方法.并且,在MainActivity中实现 onAc ...

  4. Django博客系统(用户中心修改)

    1. 用户中心接口设计 1.请求方式 选项 方案 请求方法 POST 请求地址 /center/ 2.请求参数:表单 参数名 类型 是否必传 说明 username string 否 用户名 avat ...

  5. layui设置按钮不可点击_(eblog)7、博客发布收藏、用户中心的设置

    小Hub领读: 继续我们的eblog,今天来完成博客文章收藏,用户中心的设置! 项目名称:eblog 项目 Git 仓库:https://github.com/MarkerHub/eblog(给个 s ...

  6. 超级组合:用户中心+云平台

    在Web3.0时代,一体化是个趋势,框架级别的用户中心,用户资源一体化框架需求应运而生,用户中心加云平台这个组合也随之出现.下面介绍两种框架级别的用户中心加云平台的组合. 1.用户中心UCenter ...

  7. 【Android项目实战 | 从零开始写app(十三)】实现用户中心模块清除token退出登录信息修改等功能

    五一后,被ji金伤了,哇呜呜,还是得苦逼老老实实打工写代码,看下面吧 本篇实现效果: 实现登录用户名展示到用户中心页面上,并且页面有个人信息,订单列表,修改密码,意见反馈发送到服务端,前面登录后,通过 ...

  8. 用户中心:设置头像功能

    用户中心设置头像功能(一) 热知识 原来的效果 原来的代码 修改后的代码 修改后的效果 热知识 ftl是Freemarker模板的文件后缀名 Freemarker其实是一种比较简单的网页展示技术,说白 ...

  9. Web项目实战 | 购物系统v2.0 | 开发记录(五)使用base64编码实现头像修改 | 用户个人信息修改 | JQuery动态提示

    文章目录 以往记录 一.运行环境 二.实现头像修改 三.用户个人信息修改 四.Bug & DeBug 以往记录 Web项目实战 | 购物系统v2.0 | 开发记录(一)需求分析 | 技术选型 ...

最新文章

  1. 协程Coroutines入门
  2. php计算经纬度间的距离
  3. win7 + vs2015+ matlab2016a + python3.5安装matcaffe cpu版本
  4. C语言试题三十二之编写函数function,它的功能是:将一个字符串转换为一个整数(不得调用c语言提供的将字符串转换为整数的函数)。
  5. read.table与readr::read_delim
  6. 一篇文章带你详解 HTTP 协议(网络协议篇一)
  7. TP框架使用qrcode生成二维码
  8. 手机QQ空间如何显示和修改手机机型型号
  9. 流量卡之家:物联网帮助我们应对全球问题的5种方式
  10. RDS经典网络平滑迁移到VPC的混访方案
  11. Seckill学习笔记——Day3(秒杀功能实现)
  12. Oracle Audit
  13. linux用户密码原则,linux系统普通用户设置密码
  14. [eNSP]解决路由器以及交换机一直处于##,无法启动的问题
  15. REVIT建模步骤中:绘制形状不能拾取两条参照平面的交点解决方法
  16. 怎么将PDF转换成Excel表格呢?
  17. 基于Multiple treatment的营销评估算法
  18. PCB设计相关经验分享【From EDN China】
  19. 仿滴滴出行页面Demo
  20. Linux Signal信号详解

热门文章

  1. CTO,技术总监和技术经理有啥区别?
  2. 3、线性表的顺序存储结构(顺序表)
  3. jbox ajax,JBox演示30种不同的调用方法
  4. markdown快速入门之有道云笔记七牛图床与极简图床共舞
  5. 秒杀系统流量削峰这事应该怎么做?为什么要削峰呢?
  6. 基于arduino的ESP32 学习笔记(一) 基于ESP32的智能花盆
  7. android_Android游戏开发–基本游戏架构
  8. asterisk服务器搭建 入门教程
  9. UAC绕过学习-总结
  10. python英文文本情感分析_sentimentpy模块进行中文文本情感分类