• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

php 搞代码 3年前 (2022-01-25) 17次浏览 已收录 0个评论

昨天花了点时间整合了一下头像插件 东拼西凑的成果 先来看下效果

1.先使用ajaxfileupload插件做异步上传。这个地方我本来想做个上传进度的效果,但技术有限失败了。上传按钮我还做了一个文件大小的限制,但是由于浏览器兼容性的问题,不完美在IE6–IE9之间还有很多问题需要解决

getFileSize函数是用于判断文件大小的函数

function getFileSize(fileName) {<BR>                var byteSize = 0;<BR>                //console.log($("#" + fileName).val());<BR>                if($("#" + fileName)[0].files) {<BR>                    var byteSize  = $("#" + fileName)[0].files[0].size;<BR>                }else {<BR>    //此处由于有浏览器兼容问题 还没完成大小判断的逻辑<BR>                }<BR>                //alert(byteSize);<BR>                byteSize = Math.ceil(byteSize / 1024) //KB<BR>                return byteSize;//KB<BR>            }<BR>

2.按钮上传事件绑定

$("#btnUpload").click(function () {<BR>                var allowImgageType = ['jpg', 'jpeg', 'png', 'gif'];<BR>                var file = $("#file1").val();<BR>                //获取大小<BR>                var byteSize = getFileSize('file1');<BR>                //获取后缀<BR>                if (file.length > 0) {<BR>                    if(byteSize > 2048) {<BR>                        alert("上传的附件文件不能超过2M");<BR>                        return;<BR>                    }<BR>                    var pos = file.lastIndexOf(".");<BR>                    //截取点之后的字符串<BR>                    var ext = file.substring(pos + 1).toLowerCase();<BR>                    //console.log(ext);<BR>                    if($.inArray(ext, allowImgageType) != -1) {<BR>                        ajaxFileUpload();<BR>                    }else {<BR>                        alert("请选择jpg,jpeg,png,gif类型的图片");<BR>                    }<BR>                }<BR>                else {<BR>                    alert("请选择jpg,jpeg,png,gif类型的图片");<BR>                }<BR>            });<BR>

3.在上传成功后返回图片路径,并初始化图片裁剪。图片裁剪就直接用ajax请求到php

function ajaxFileUpload() {<BR>                $.ajaxFileUpload({<BR>                    url: 'action.php', //用于文件上传的服务器端请求地址<BR>                    secureuri: false, //一般设置为false<BR>                    fileElementId: 'file1', //文件上传空间的id属性  <BR>                    dataType: 'json', //返回值类型 一般设置为json<BR>                    success: function (data, status)  //服务器成功响应处理函数<BR>                    {<BR>                        //var json = eval('(' + data + ')');<BR>                        //alert(data);<BR>                        $("#picture_original>img").attr({src: data.src, width: data.width, height: data.height});<BR>                        $('#imgsrc').val(data.path);<BR>                        //alert(data.msg);</P><P>                        //同时启动裁剪操作,触发裁剪框显示,让用户选择图片区域<BR>                        var cutter = new jQuery.UtrialAvatarCutter({<BR>                                //主图片所在容器ID<BR>             <em style="color:transparent">本文来源[email protected]搞@^&代*@码)网9</em><strong>搞代gaodaima码</strong>                   content : "picture_original",<BR>                                //缩略图配置,ID:所在容器ID;width,height:缩略图大小<BR>                                purviews : [{id:"picture_200",width:200,height:200},{id:"picture_50",width:50,height:50},{id:"picture_30",width:30,height:30}],<BR>                                //选择器默认大小<BR>                                selector : {width:200,height:200},<BR>                                showCoords : function(c) { //当裁剪框变动时,将左上角相对图片的X坐标与Y坐标 宽度以及高度<BR>                                    $("#x1").val(c.x);<BR>                                    $("#y1").val(c.y);<BR>                                    $("#cw").val(c.w);<BR>                                    $("#ch").val(c.h);<BR>                                },<BR>                                cropattrs : {boxWidth: 500, boxHeight: 500}<BR>                            }<BR>                        );<BR>                        cutter.reload(data.src);<BR>                        $('#div_avatar').show();<BR>                    },<BR>                    error: function (data, status, e)//服务器响应失败处理函数<BR>                    {<BR>                        alert(e);<BR>                    }<BR>                })<BR>                return false;<BR>            }<br><br>            $('#btnCrop').click(function() {<BR>                $.getJSON('action2.php', {x: $('#x1').val(), y: $('#y1').val(), w: $('#cw').val(), h: $('#ch').val(), src: $('#imgsrc').val()}, function(data) {<BR>                    alert(data.msg);<BR>                });<BR>                return false;<BR>            });<BR>

4.HTML文件代码如下

<body><BR>    <BR>    <BR>    <div style="overflow:hidden" id="div_avatar"><BR>        <div style="width:500px;height:500px;overflow:hidden;float:left" id="picture_original">













现在还很粗糙,功能还有很多需要完善的地方。大家有兴趣的话,就拿去使用吧。如果完善了进度条和文件大小的功能,记得也分享给我一份哦。

附上源码 http://www.php.net/codes/174384.html


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁_php实例

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址