| 自DZ0606版开始,用户头像与UC合并,而且采取了新的存贮规则。 为了彻底了解UC系统头像的存贮方式,对DZ的头像解析程序 avatar.php进行了简单分析。
 请看下面的程序段:
 所以,UID为31的用户,其头像文件的正确路径为:复制代码function get_avatar($uid, $size = 'middle') {
        $size = in_array($size, array('big', 'middle', 'small')) ? $size : 'middle';
        $uid = abs(intval($uid)); //UID取整数绝对值
        $uid = sprintf("%09d", $uid); //前边加0补齐9位,例如UID为31的用户变成 000000031
        $dir1 = substr($uid, 0, 3);  //取左边3位,即 000
        $dir2 = substr($uid, 3, 2);  //取4-5位,即00
        $dir3 = substr($uid, 5, 2);  //取6-7位,即00
// 下面拼成用户头像路径,即000/00/00/31_avatar_middle.jpg
        return $dir1.'/'.$dir2.'/'.$dir3.'/'.substr($uid, -2)."_avatar_$size.jpg";
}
uc/data/avatar/000/00/00/31_avatar_small.jpg
 uc/data/avatar/000/00/00/31_avatar_middle.jpg
 uc/data/avatar/000/00/00/31_avatar_big.jpg
 如果在以上位置找不到相应的文件,则自动重定向到:
 Location: images/noavatar_$size.gif
 也就是:
 uc/images/noavatar_small.gif
 uc/images/noavatar_middle.gif
 uc/images/noavatar_big.gif
 根据提交的参数调用其中的一个显示。
 ============================
 明白了以上道理,实际应用中如果出现用户头像显示问题,就可以采取以下变通处理:
 1. 模板中直接调用头像:
 <img src=http://你的域名/UC目录名/avatar.php?uid=$post[authorid]&size="small" border=0>
 2. 升级后自行整理上传用户头像:
 如果升级后有些用户头像显示不出来,你可以直接按照以上规则创建目录,将customavatars/下的用户自定义头像上传到相应目录并重新命名。
 例:某用户UID为12345,原头像保存在customavatars/12345.jpg,根据以上算法,升级后的头像目录即为:
 uc/data/avatar/000/01/23/
 那么你就可以将用户原头像文件复制-改名为:45_avatar_middle.jpg,45_avatar_small.jpg,45_avatar_big.jpg
 上传到该目录下就可以了。
 当然,你也可以写一个程序自行完成以上过程。
 
 [ 本帖最后由 sdaupp 于 2008-7-4 14:33 编辑 ]
 |