您好,欢迎访问一九零五行业门户网

PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁_PHP

ajax
昨天花了点时间整合了一下头像插件 东拼西凑的成果 先来看下效果
1.先使用ajaxfileupload插件做异步上传。这个地方我本来想做个上传进度的效果,但技术有限失败了。上传按钮我还做了一个文件大小的限制,但是由于浏览器兼容性的问题,不完美在ie6--ie9之间还有很多问题需要解决
getfilesize函数是用于判断文件大小的函数
复制代码 代码如下:
function getfilesize(filename) {
                var bytesize = 0;
                //console.log($(# + filename).val());
                if($(# + filename)[0].files) {
                    var bytesize  = $(# + filename)[0].files[0].size;
                }else {
    //此处由于有浏览器兼容问题 还没完成大小判断的逻辑
                }
                //alert(bytesize);
                bytesize = math.ceil(bytesize / 1024) //kb
                return bytesize;//kb
            }
2.按钮上传事件绑定
复制代码 代码如下:
$(#btnupload).click(function () {
                var allowimgagetype = ['jpg', 'jpeg', 'png', 'gif'];
                var file = $(#file1).val();
                //获取大小
                var bytesize = getfilesize('file1');
                //获取后缀
                if (file.length > 0) {
                    if(bytesize > 2048) {
                        alert(上传的附件文件不能超过2m);
                        return;
                    }
                    var pos = file.lastindexof(.);
                    //截取点之后的字符串
                    var ext = file.substring(pos + 1).tolowercase();
                    //console.log(ext);
                    if($.inarray(ext, allowimgagetype) != -1) {
                        ajaxfileupload();
                    }else {
                        alert(请选择jpg,jpeg,png,gif类型的图片);
                    }
                }
                else {
                    alert(请选择jpg,jpeg,png,gif类型的图片);
                }
            });
3.在上传成功后返回图片路径,并初始化图片裁剪。图片裁剪就直接用ajax请求到php
复制代码 代码如下:
function ajaxfileupload() {
                $.ajaxfileupload({
                    url: 'action.php', //用于文件上传的服务器端请求地址
                    secureuri: false, //一般设置为false
                    fileelementid: 'file1', //文件上传空间的id属性 
                    datatype: 'json', //返回值类型 一般设置为json
                    success: function (data, status)  //服务器成功响应处理函数
                    {
                        //var json = eval('(' + data + ')');
                        //alert(data);
                        $(#picture_original>img).attr({src: data.src, width: data.width, height: data.height});
                        $('#imgsrc').val(data.path);
                        //alert(data.msg);
                        //同时启动裁剪操作,触发裁剪框显示,让用户选择图片区域
                        var cutter = new jquery.utrialavatarcutter({
                                //主图片所在容器id
                                content : picture_original,
                                //缩略图配置,id:所在容器id;width,height:缩略图大小
                                purviews : [{id:picture_200,width:200,height:200},{id:picture_50,width:50,height:50},{id:picture_30,width:30,height:30}],
                                //选择器默认大小
                                selector : {width:200,height:200},
                                showcoords : function(c) { //当裁剪框变动时,将左上角相对图片的x坐标与y坐标 宽度以及高度
                                    $(#x1).val(c.x);
                                    $(#y1).val(c.y);
                                    $(#cw).val(c.w);
                                    $(#ch).val(c.h);
                                },
                                cropattrs : {boxwidth: 500, boxheight: 500}
                            }
                        );
                        cutter.reload(data.src);
                        $('#div_avatar').show();
                    },
                    error: function (data, status, e)//服务器响应失败处理函数
                    {
                        alert(e);
                    }
                })
                return false;
            }
$('#btncrop').click(function() {
                $.getjson('action2.php', {x: $('#x1').val(), y: $('#y1').val(), w: $('#cw').val(), h: $('#ch').val(), src: $('#imgsrc').val()}, function(data) {
                    alert(data.msg);
                });
                return false;
            });
4.html文件代码如下
复制代码 代码如下:
现在还很粗糙,功能还有很多需要完善的地方。大家有兴趣的话,就拿去使用吧。如果完善了进度条和文件大小的功能,记得也分享给我一份哦。
附上源码 http://www.bitscn.com/codes/174384.html
其它类似信息

推荐信息