分享一个think结合美图秀秀的上传头像裁切代码实例

浏览:8239 发布日期:2013/09/21 分类:用法示例 关键字: 头像 美图秀秀
半夜睡不着,浏览官网,看到有提到美图秀秀插件的,没有找到有写好的,就实现了一下分享给大家,破处之作,欢迎大大们提建议!
半路中遇到一个问题,提示上传成功,但是目录里没有图片,纠结烦恼了好久才发现已经是第二天了,过了凌晨又自动建下一个日期目录了......那叫相当一个蛋疼啊!

首先把附件下载下来,然后把 crossdomain.xml 文件放到保存图片的服务器上根目录下,例如您的保存图片的服务器地址为: http://www.nianrenba.com,那么 crossdomain.xml 的路径为:http://www.nianrenba.com/crossdomain.xml 。
部署 crossdomain.xml 的目的是授权来自美图秀秀的flash向您的站点上传图片
视图代码(一定要放在<head></head>之间):<script src="http://open.web.meitu.com/sources/xiuxiu.js" type="text/javascript"></script>
    <script type="text/javascript">
        window.onload=function(){
          xiuxiu.embedSWF("altContent",5,"630px","440px");
          /*第1个参数是加载编辑器div容器,第2个参数是编辑器类型,第3个参数是div容器宽,第4个参数是div容器高*/
          xiuxiu.setUploadURL("http://www.nianrenba.com/Member/meichuan");//修改为上传接收图片程序地址
          xiuxiu.onInit = function ()
          {
            xiuxiu.loadPhoto("http://www.nianrenba.com/Public/Uploads/avatars/meitu.jpg");//修改为要处理的图片url
          }
          xiuxiu.onUploadResponse = function (data)
          {
            if(data == "上传头像成功!"){
                window.location="<{:U('person/'.$_SESSION['uid'])}>";
            }else{
                alert(data);
            }
          }
        }
    </script>
</head>
控制器代码: //上传头像美图秀秀
    public function mei(){
        $this->display();
    }
    //得到一个数据库中不存在的记录了
    public function check($save_path){
        $uniqid = uniqid();
        //判断数据库中是否已经有此记录了
        $mem = M('Member');
        $filename = substr($save_path . '/' . $uniqid . '.jpg',25);
        $n = $mem->where(array('avatar'=>$filename))->count();
        if($n != false){
            return $this->check($save_path);
        }else{
            return $filename;
        }

    }
    //上传到空间
    public function meichuan(){
            $post_input = 'php://input';
            $save_path = './Public/Uploads/avatars/'.date('Ymd',time());    //定义一个要上传头像的目录
            is_dir($save_path) || mkdir($save_path);    //如果没有这么目录,那么就创建这个目录
            $postdata = file_get_contents( $post_input );

            if ( isset( $postdata ) && strlen( $postdata ) > 0 ) {
                $filename = $this->check($save_path);
                $picname = substr($save_path,0,25).$filename;
                $handle = fopen( $picname, 'w+' );
                fwrite( $handle, $postdata );
                fclose( $handle );
                if ( is_file( $picname ) ) {
                    $mem = M('Member');
                    //删除原先的头像图片
                    $ava = $mem->where(array('uid'=>$_SESSION['uid']))->getField('avatar');
                    $oldavapath = substr($save_path,0,25).$ava;
                    if(($ava!=false)&&(is_file($oldavapath))) unlink($oldavapath);
                    $data['avatar'] = $filename;
                    $mem->where(array('uid'=>$_SESSION['uid']))->save($data);
                    echo '上传头像成功!';
                    exit ();
                }else {
                    die ( '上传头像失败!' );
                }
            }else {
                die ( '没有图片信息!' );
            }
    }
演示地址:http://www.nianrenba.com
账号自己注册个吧,实在太懒看下面:
ID:美图秀秀测试,PASSWORD:jtheihhie15764afhdh
说明:网站是用别的上传头像的方法,本人下面又加了一个链接可以链接到美图秀秀上传方法.

附件 crossdomain.zip ( 529 B 下载:599 次 )

评论( 相关
后面还有条评论,点击查看>>