ucenter用户中心头像修改,不使用自带方法,不使用flash 转
项目中用户中心用的是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,即可保存用户图 像。
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 转相关推荐
- Flask博客开发实战-用户中心实现修改个人信息功能
用户中心实现修改个人信息功能 该功能的实现在做用户管理的时候其实我们已经写过了,这里其实仅仅只需要做的是获取到当前用户,允许用户登录后修改自己用户信息就可以了! 补充User的模型数据 gexing ...
- android 用户中心布局,android用户中心头像选择功能的方法实现-Go语言中文社区
实现总体思路:主要采用startActivityForResult(intent, 0x111)和setResult(0x111, intent)方法.并且,在MainActivity中实现 onAc ...
- android用户中心头像选择功能的方法实现
实现总体思路:主要采用startActivityForResult(intent, 0x111)和setResult(0x111, intent)方法.并且,在MainActivity中实现 onAc ...
- Django博客系统(用户中心修改)
1. 用户中心接口设计 1.请求方式 选项 方案 请求方法 POST 请求地址 /center/ 2.请求参数:表单 参数名 类型 是否必传 说明 username string 否 用户名 avat ...
- layui设置按钮不可点击_(eblog)7、博客发布收藏、用户中心的设置
小Hub领读: 继续我们的eblog,今天来完成博客文章收藏,用户中心的设置! 项目名称:eblog 项目 Git 仓库:https://github.com/MarkerHub/eblog(给个 s ...
- 超级组合:用户中心+云平台
在Web3.0时代,一体化是个趋势,框架级别的用户中心,用户资源一体化框架需求应运而生,用户中心加云平台这个组合也随之出现.下面介绍两种框架级别的用户中心加云平台的组合. 1.用户中心UCenter ...
- 【Android项目实战 | 从零开始写app(十三)】实现用户中心模块清除token退出登录信息修改等功能
五一后,被ji金伤了,哇呜呜,还是得苦逼老老实实打工写代码,看下面吧 本篇实现效果: 实现登录用户名展示到用户中心页面上,并且页面有个人信息,订单列表,修改密码,意见反馈发送到服务端,前面登录后,通过 ...
- 用户中心:设置头像功能
用户中心设置头像功能(一) 热知识 原来的效果 原来的代码 修改后的代码 修改后的效果 热知识 ftl是Freemarker模板的文件后缀名 Freemarker其实是一种比较简单的网页展示技术,说白 ...
- Web项目实战 | 购物系统v2.0 | 开发记录(五)使用base64编码实现头像修改 | 用户个人信息修改 | JQuery动态提示
文章目录 以往记录 一.运行环境 二.实现头像修改 三.用户个人信息修改 四.Bug & DeBug 以往记录 Web项目实战 | 购物系统v2.0 | 开发记录(一)需求分析 | 技术选型 ...
最新文章
- 协程Coroutines入门
- php计算经纬度间的距离
- win7 + vs2015+ matlab2016a + python3.5安装matcaffe cpu版本
- C语言试题三十二之编写函数function,它的功能是:将一个字符串转换为一个整数(不得调用c语言提供的将字符串转换为整数的函数)。
- read.table与readr::read_delim
- 一篇文章带你详解 HTTP 协议(网络协议篇一)
- TP框架使用qrcode生成二维码
- 手机QQ空间如何显示和修改手机机型型号
- 流量卡之家:物联网帮助我们应对全球问题的5种方式
- RDS经典网络平滑迁移到VPC的混访方案
- Seckill学习笔记——Day3(秒杀功能实现)
- Oracle Audit
- linux用户密码原则,linux系统普通用户设置密码
- [eNSP]解决路由器以及交换机一直处于##,无法启动的问题
- REVIT建模步骤中:绘制形状不能拾取两条参照平面的交点解决方法
- 怎么将PDF转换成Excel表格呢?
- 基于Multiple treatment的营销评估算法
- PCB设计相关经验分享【From EDN China】
- 仿滴滴出行页面Demo
- Linux Signal信号详解