哥斯拉 发表于 2023-5-30 22:04:09

Discuz 头像图片上传程序简介

一 . 设置flsah 上传
首先根据程序找到对应的模版是 template/ default/ spacecp_avaster.htm ;
discuz通过 flash上传并且将对应的参数和值传递给php进行处理;
首先运行函数
<script type="text/javascript">
document.write(AC_FL_Runcontent((‘<!--{echo implode("’,’" , $uc avatarflash);}-->’));
</script>
$uc_avatarflash是一个数组,主要是带有flash的各种参数;
通过调用 source/include/spacep_avaster.php文件,
中的 $uc_avatarflash = uc_avatar(S_G[ uid] , ' virtual' , 0 );
设置这个函数的位置实在 \uc_client\ client.php根据调用参数,返回这个数组;

return array(
'width' => 450,
'height' => 253,
'scale' => 'exactfit',
'src' => $uc_avatarflash,
'id' => 'mycamera',
'name' => 'mycamera',
'quality' => 'high',
'bgcolor' => '#ffffff',
'menu' => 'false',
'swliveconnect' => 'true',
'allowscriptAccess' => 'always'
);

这个数据返回给 AC_Fl_RunContent 函数设置 flash的参数;

二、接受参数并处理

原理, flash上传只要是通过生成一个临时文件,在把这个临时的图片文件转
化成16进制数字, 最后,通过 flash_decode降图片以不同尺寸存放到不同的目录

1,生成临时图片文件,调用论坛目录下的uc_ server/ control/user.php
中的 onuploadavatar生成临时文件;


2裁切图片(将图片转换成16进制,再进行裁切)
函数位置 :uc_server/control/user.php
函数 : onuploadavatar();



函数flash_decode(); 接收参数 , 将图片裁切成不同尺寸 , 这里的不同尺寸的16进制数据 主要是通过flash传递给php 例如 getgpc(‘avatarl’,’P’);

页: [1]
查看完整版本: Discuz 头像图片上传程序简介

创宇盾启航版免费网站防御网站加速服务