去评论
dz插件网

Discuz 头像图片上传程序简介

哥斯拉
2023/05/30 22:04:09
. 设置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’);