ecshop二次开始--头像上传

1.打开网址:http://www.fullavatareditor.com/download.html





2.





















代码实现:

1.首先先在themes\default\library\user_menu.lbi中插一条

  1. <a href="user.php?act=avatar"{if $action eq 'avatar'}class="curs"{/if}><img src="../images/u2.gif"> 用户头像</a>  








2.在user.PHP的action列表中的数组中加一个avatar




3:在upload\user.php中插一条elseif语句,调用模板

  1. elseif($action == 'avatar')  
  2.   
  3. {  
  4.   
  5. $smarty->assign('uid',$user_id);//传一个用户id到user_transaction.dwt页面  
  6.   
  7.       $smarty->display('user_transaction.dwt');  
  8.   
  9. }  

4:在themes\default\user_transaction.dwt的<!-- 用户信息界面 start-->上面加上一下代码

  1. <!--#用户头像界面 start-->  
  2.   
  3.            <!-- {if $action eq 'avatar'}-->  
  4.   
  5.               <h5><span>用户头像</span></h5>  
  6.   
  7.                      <table width="100%" border="0" cellpadding="5" cellspacing="1" bgcolor="#dddddd">  
  8.   
  9.                       <tr>  
  10.   
  11.                         <td align="center" bgcolor="#FFFFFF">  
  12.   
  13.               {insert_scripts files='fullAvatar/scripts/swfobject.js,fullAvatar/scripts/fullAvatarEditor.js'}--------引入脚本  
  14.   
  15.                                <p id="swfContainer">  
  16.   
  17.                                   本组件需要安装Flash Player后才可使用,请从<a href="http://www.adobe.com/go/getflashplayer">这里</a>下载安装。  
  18.   
  19.                                </p>  
  20.   
  21.                                <script type="text/javascript">  
  22.   
  23.                           swfobject.addDomLoadEvent(function () {  
  24.   
  25.                                     var swf = new fullAvatarEditor("js/fullAvatar/fullAvatarEditor.swf""js/fullAvatar/expressInstall.swf""swfContainer", {  
  26.   
  27.                                               id : 'swf',  
  28.   
  29.                                                 upload_url : 'user.php?act=do_avatar&userid={$uid}', //上传接口  
  30.   
  31.                                                 method : 'post',  //传递到上传接口中的查询参数的提交方式。更改该值时,请注意更改上传接口中的查询参数的接收方式  
  32.   
  33.                                                 src_upload : 2,         //是否上传原图片的选项,有以下值:0-不上传;1-上传;2-显示复选框由用户选择  
  34.   
  35.                                                 avatar_box_border_width : 0,  
  36.   
  37.                                                 avatar_sizes : '100*100|50*50|32*32',  
  38.   
  39.                                                 avatar_sizes_desc : '100*100像素|50*50像素|32*32像素'  
  40.   
  41.                                           }, function (msg) {  
  42.   
  43.   
  44.   
  45.                                                 switch(msg.code)  
  46.   
  47.                                                 {  
  48.   
  49.                                                       //case 1 : alert("页面成功加载了组件!");break;  
  50.   
  51.                                                      case 2 :  
  52.   
  53.                                                            alert("已成功加载图片到编辑面板。");  
  54.   
  55.                                                            document.getElementById("upload").style.display = "inline";  
  56.   
  57.                                                            break;  
  58.   
  59.                                                      case 3 :  
  60.   
  61.                                                            if(msg.type == 0)  
  62.   
  63.                                                            {  
  64.   
  65.                                                                 alert("摄像头已准备就绪且用户已允许使用。");  
  66.   
  67.                                                            }  
  68.   
  69.                                                            else if(msg.type == 1)  
  70.   
  71.                                                            {  
  72.   
  73.                                                                 alert("摄像头已准备就绪但用户未允许使用!");  
  74.   
  75.                                                            }  
  76.   
  77.                                                            else  
  78.   
  79.                                                            {  
  80.   
  81.                                                                 alert("摄像头被占用!");  
  82.   
  83.                                                            }  
  84.   
  85.                                                      break;  
  86.   
  87.                                                      case 5 :  
  88.   
  89.                                                            if(msg.type == 0)  
  90.   
  91.                                                            {  
  92.   
  93.   
  94.   
  95.                                                                 if(msg.content.sourceUrl)  
  96.   
  97.                                                                 {  
  98.   
  99.                                                                       alert("原图已成功保存至服务器,url为:\n" + msg.content.sourceUrl+"\n\n" + "头像已成功保存至服务器,url为:\n" + msg.content.avatarUrls.join("\n\n")+"\n\n传递的userid="+msg.content.userid+"&username="+msg.content.username);  
  100.   
  101.                                                                 }  
  102.   
  103.                                                                 else  
  104.   
  105.                                                                 {  
  106.   
  107.                                                                       alert("头像已成功保存至服务器,url为:\n" + msg.content.avatarUrls.join("\n\n")+"\n\n传递的userid="+msg.content.userid+"&username="+msg.content.username);  
  108.   
  109.                                                                 }  
  110.   
  111.                                                            }  
  112.   
  113.                                                      break;  
  114.   
  115.                                                 }  
  116.                                           }  
  117.                                     );  
  118.                           });  
  119.                       </script>  
  120.               </td>  
  121.                       </tr>  
  122.                          </table>  
  123.       <!--{/if}-->  
  124.            <!--#用户头像界面结束 end-->  

4:将你下载的插件的文件夹放在js文件

5:在用户头像下面在写一个elseif语句,(文件上传时所用方法)











  1. /*文件上传是所用方法*/  
  2. elseif($action== 'do_avatar')  
  3. {  
  4.     $result = array();  
  5.     $result['success'] = false;  
  6.     $success_num = 0;  
  7.     $msg = '';  
  8.     //上传目录  
  9.     $dir = dirname(__FILE__)."\images\avatar";  
  10.       // 取服务器时间+8位随机码作为部分文件名,确保文件名无重复。  
  11.       $filename = date("YmdHis").'_'.floor(microtime() * 1000).'_'.createRandomCode(8);  
  12.       //upload_url中传递的额外的参数,如果定义的method为get请换为$_GET  
  13.       $result["userid"] = $_POST["userid"];  
  14.       $result["username"]     = $_POST["username"];  
  15.       // 处理原始图片开始------------------------------------------------------------------------>  
  16.       //默认的 file 域名称是__source,可在插件配置参数中自定义。参数名:src_field_name  
  17.       $source_pic = $_FILES["__source"];  
  18.       //如果在插件中定义可以上传原始图片的话,可在此处理,否则可以忽略。  
  19.       if ($source_pic)  
  20.       {  
  21.   
  22.           if ( $source_pic['error'] > 0 )  
  23.           {  
  24.               $msg .= $source_pic['error'];  
  25.           }  
  26.           else  
  27.           {  
  28.   
  29.               //原始图片的文件名,如果是本地或网络图片为原始文件名、如果是摄像头拍照则为 *FromWebcam.jpg  
  30.               $sourceFileName = $source_pic["name"];  
  31.               //原始文件的扩展名(不包含“.”)  
  32.               $sourceExtendName = substr($sourceFileName, strripos($sourceFileName, "."));  
  33.               //保存路径  
  34.               $savePath = "$dir\php_source_$filename.".$sourceExtendName;  
  35.               //当前头像基于原图的初始化参数(只有上传原图时才会发送该数据,且发送的方式为POST),用于修改头像时保证界面的视图跟保存头像时一致,提升用户体验度。  
  36.               //修改头像时设置默认加载的原图url为当前原图url+该参数即可,可直接附加到原图url中储存,不影响图片呈现。  
  37.               $init_params = $_POST["__initParams"];  
  38.               $result['sourceUrl'] = toVirtualPath($savePath).$init_params;  
  39.               move_uploaded_file($source_pic["tmp_name"], $savePath);  
  40.               $success_num++;  
  41.           }  
  42.       }  
  43.       //<------------------------------------------------------------------------处理原始图片结束  
  44.       // 处理头像图片开始------------------------------------------------------------------------>  
  45.       //头像图片(file 域的名称:__avatar1,2,3...)。  
  46.       $avatars = array("__avatar1""__avatar2""__avatar3");  
  47.       $avatars_length = count($avatars);  
  48.       for ( $i = 0; $i < $avatars_length; $i++ )  
  49.   
  50.       {  
  51.           $avatar = $_FILES[$avatars[$i]];  
  52.           $avatar_number = $i + 1;  
  53.           if ( $avatar['error'] > 0 )  
  54.           {  
  55.               $msg .= $avatar['error'];  
  56.           }  
  57.           else  
  58.           {  
  59.               $savePath = "$dir\php_avatar" . $avatar_number . "_".$result["userid"].".jpg";  
  60.                  $result['avatarUrls'][$i] = toVirtualPath($savePath);  
  61.                  move_uploaded_file($avatar["tmp_name"], $savePath);  
  62.                  $success_num++;  
  63.            }  
  64.       }  
  65.       //<------------------------------------------------------------------------处理头像图片结束  
  66.       $result['msg'] = $msg;  
  67.       if ($success_num > 0)  
  68.       {  
  69.           $result['success'] = true;  
  70.       }  
  71.       //返回图片的保存结果(返回内容为json字符串)  
  72.       print json_encode($result);  
  73.       //$smarty->display('user_transaction.dwt');  
  74. }  

6:将下面的代码放入user.php最后面(两个自定义函数)

  1. /**************************************************************  
  2. *  生成指定长度的随机码。  
  3. *  @param int $length 随机码的长度。  
  4. *  @access public  
  5.   
  6. **************************************************************/  
  7.       function createRandomCode($length)  
  8.       {  
  9.            $randomCode = "";  
  10.            $randomChars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';  
  11.            for ($i = 0; $i < $length; $i++)  
  12.            {  
  13.                  $randomCode .= $randomChars { mt_rand(035) };  
  14.            }  
  15.            return $randomCode;  
  16.       }  
  17. /**************************************************************  
  18. *  将物理路径转为虚拟路径。  
  19. *  @param string $physicalPpath 物理路径。  
  20. *  @access public  
  21. **************************************************************/  
  22.       function toVirtualPath($physicalPpath)  
  23.       {  
  24.            $virtualPath = str_replace($_SERVER['DOCUMENT_ROOT'], "", $physicalPpath);  
  25.            $virtualPath = str_replace("\\", "/", $virtualPath);  
  26.                    return $virtualPath;  
  27.       }  


7:在images中新建一个文件夹以便于存放图片







8:将登陆用户的id传到user.php中

$smarty->assign('uid',$user_id);






9:在user_menu.lib中插入一个img标签,用来显示当前登录人的会员头像

  1. <img src="http://www.php8.com/ecshop1/upload/images/avatar/php_avatar2_{$uid}.jpg" width='100' height='70' style="margin-left:45px;"/>  





10.到此完毕
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值