WebUploader 案例【上传头像】

// html
<div  style="margin-top:34px;" id="box_avatar">
                    <!--用来存放文件信息-->
                    <div style="float:left;height:115px;width:115px; margin-right:15px;">
                        <div class="imgWrap">
                            <img src="" id="avatar" style="width:110px;height:110px;" onerror="$(this).attr(‘src‘, ‘/Images/UserAvatar/lock.png‘)" />
                            <div class="progress"><span></span></div>
                            <div class="infobox"></div>
                        </div>
                    </div>
                    <div style="margin-left:15px;">
                        <div id="picker"></div>
                    </div>
  </div>

.imgWrap {
    position: relative;
    z-index: 2;
    line-height: 110px;
    vertical-align: middle;
    overflow: hidden;
    width: 110px;
    height: 110px;
    -webkit-transform-origin: 50% 50%;
    -moz-transform-origin: 50% 50%;
    -o-transform-origin: 50% 50%;
    -ms-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -webit-transition: 200ms ease-out;
    -moz-transition: 200ms ease-out;
    -o-transition: 200ms ease-out;
    -ms-transition: 200ms ease-out;
    transition: 200ms ease-out;
}

    .imgWrap .infobox {
        display: none;
        position: absolute;
        width: 100%;
        bottom: 0;
        left: 0;
        height: 18px;
        overflow: hidden;
        z-index: 50;
        margin: 0;
        background: rgba(0,0,0,0.1);
        color: green;
        font-weight: 500;
        text-align: center;
        line-height: 1.3;
    }

    .imgWrap .progress {
        display: none;
        position: absolute;
        width: 100%;
        bottom: 2px;
        left: 0;
        height: 5px;
        overflow: hidden;
        z-index: 50;
        margin: 0;
        border-radius: 2px;
        background: rgba(0,0,0,0.1);
        -webkit-box-shadow: 0 0 0;
    }

        .imgWrap .progress span {
            display: block;
            overflow: hidden;
            width: 0%;
            height: 100%;
            background: #1483d8;
            -webit-transition: width 200ms linear;
            -moz-transition: width 200ms linear;
            -o-transition: width 200ms linear;
            -ms-transition: width 200ms linear;
            transition: width 200ms linear;
            -webkit-animation: progressmove 2s linear infinite;
            -moz-animation: progressmove 2s linear infinite;
            -o-animation: progressmove 2s linear infinite;
            -ms-animation: progressmove 2s linear infinite;
            animation: progressmove 2s linear infinite;
            -webkit-transform: translateZ(0);
        }

css

$(function(){

        // 上传图片
        $("#box_avatar").Tx_UploadAvatar({
            uploader: new Object(),
            uploadtype: "avatar_teacherinfo"
        });

});

/*
    作用 : 用户上传头像
*/
(function ($) {

    $.fn.Tx_UploadAvatar = function (option) {

        // 默认参数
        var _default = {
            uploader: new Object(),
            thumbnailWidth: 110,
            thumbnailHeight: 110,
            image: $("#avatar"),
            pick: { id: "#picker", label: "选择图片" },
            uploadtype: "",
            callback: function () { }
        }

        // 参数处理
        option = $.extend(_default, option);

        // Obj
        var _Obj = this;

        // 上传按钮

        var uploadBtn;

        // ratio
        var ratio = window.devicePixelRatio || 1;

        // 图片预览大小
        option.thumbnailWidth = option.thumbnailWidth * ratio;
        option.thumbnailHeight = option.thumbnailHeight * ratio;

        var createUploadBtn = function (text) {
            uploadBtn = $(‘<div class="webuploader-pick">‘ + text + ‘</div>‘).on("click", function () {
                $(this).remove();
                $(_Obj).find(".progress").show();
                option.uploader.upload();
            });
        };

        var changeProgress = function (width) {
            var $li = $(_Obj).find(".progress"),
               $percent = $li.find("span");
            $percent.css("width", width * 100 + "%");
        }

        option.uploader = WebUploader.create({
            pick: option.pick,
            // swf文件路径
            swf: ‘/Scripts/webuploader/Uploader.swf‘,

            // 文件接收服务端。
            server: ‘/UserCenter/UploadAvatar‘,
            // 内部根据当前运行是创建,可能是input元素,也可能是flash.
            // 只允许选择图片文件。
            accept: {
                title: ‘Images‘,
                extensions: ‘jpg,jpeg,bmp,png‘,
                mimeTypes: ‘image/*‘
            },
            //文件数量
            fileNumLimit: 1,
            // 不压缩image, 默认如果是jpeg,文件上传前会压缩一把再上传!
            resize: false,
            //允许的图片大小
            fileSingleSizeLimit: 1 * 1024 * 1024,

            formData: {
                "uploadtype": option.uploadtype
            }
        });

        option.uploader.on("beforeFileQueued", function () {
            var _UploadFile = option.uploader.getFiles();
            if (_UploadFile.length > 0)
                option.uploader.removeFile(_UploadFile[_UploadFile.length - 1], true);
        });

        //图片加入队列,输入预览图像
        option.uploader.on(‘fileQueued‘, function (file) {

            // 创建缩略图
            // thumbnailWidth x thumbnailHeight 为 100 x 100
            option.uploader.makeThumb(file, function (error, src) {
                if (error)
                    alert("图片无法预览!");
                else
                    option.image.attr(‘src‘, src);
            }, option.thumbnailWidth, option.thumbnailHeight);

            //上传按钮
            createUploadBtn("开始上传")
            $(option.pick.id).after(uploadBtn);
        });

        //错误信息
        option.uploader.on("error", function (handler) {
            switch (handler) {
                case "Q_EXCEED_NUM_LIMIT":
                    $.L.msgWarning("只能上传一张图片!");
                    break;
                case "F_EXCEED_SIZE":
                    $.L.msgWarning("图片大小不能超过1M!");
                    break;
                case "Q_TYPE_DENIED":
                    $.L.msgWarning("不支持的图片类型!");
                    break;
            }
        });

        //上传完成后移除进度条
        option.uploader.on("uploadComplete", function (file) {
            $(_Obj).find(".progress").fadeOut(1000);
        });

        //上传成功
        option.uploader.on("uploadSuccess", function (file, info) {
            option.image.attr("src", info.fileName);
            $(_Obj).find(‘.infobox‘).text("上传成功").css("color", "green").fadeIn();
            $(_Obj).find(‘.infobox‘).fadeOut(2000);
            changeProgress(0);
            option.callback();
        });

        //上传出错
        option.uploader.on("uploadError", function (file, info) {
            $(_Obj).find(".progress").fadeOut(1);
            changeProgress(0);
            $(_Obj).find(".infobox").text("上传失败").css("color", "red").fadeIn();
        });

        //进度条
        option.uploader.on("uploadProgress", function (file, percentage) {
            changeProgress(percentage);
        });
    }

})(jQuery);

封装的插件部分

        /// <summary>
        /// 上传头像
        /// </summary>
        /// <param name="file"></param>
        /// <returns></returns>
        public JsonResult UploadAvatar(HttpPostedFileBase file, string uploadtype)
        {
            // 图片路径
            string _path = string.Empty;

            if (string.IsNullOrEmpty(uploadtype))
            {
                throw new Exception("上传失败!");
            }
            else
            {
                // 允许上传的图片的类型
                List<string> _imagetype = new List<string>() { ".jpg", ".jpeg", ".bmp", ".png" };

                // 图片名称
                string _avatarname = string.Empty;

                // file是否存在
                if (file == null || file.ContentLength == 0)
                {
                    throw new Exception("上传失败!");
                }
                // file的大小
                else if (file.ContentLength > (1 * 1024 * 1024))
                {
                    throw new Exception("图片不大于1M!");
                }
                else
                {
                    string _extension = Path.GetExtension(file.FileName).ToLower();
                    if (!_imagetype.Contains(_extension))
                    {
                        throw new Exception("不支持的图片类型!");
                    }
                    else
                    {
                        EncryptHelper _eh = new EncryptHelper();
                        _avatarname = _eh.Md5(DateTime.Now.Ticks.ToString()) + _extension;
                        _path = Path.Combine(Server.MapPath("~/Images/UserAvatar/"), _avatarname);
                        file.SaveAs(_path);

                        _path = "/Images/UserAvatar/" + _avatarname;

                        switch (uploadtype)
                        {
                            case "avatar_userinfo":
                                //保存至数据库
                                break;
                            case "avatar_teacherinfo":
                                //保存至数据库
                                break;
                            case "avatar_studentinfo":
                                //保存至数据库
                                break;
                        }
                    }
                }

            }

            return Json(new { fileName = _path });
        }

Controller

时间: 2024-08-11 21:20:17

WebUploader 案例【上传头像】的相关文章

上传头像裁剪功能

我之前做项目的时候有需求是需要实现上传头像裁剪再上传到服务器,所以上网看了一下别人写的案例.方法.文章,浪费了1天的时间,最后才跌跌碰碰的终于写了出来. 现在给大家分享一下吧. 所用到的js文件 cropper.min.js, canvas-to-blob.js(这个是IE上需要用到的,不然会不支持转blob) jquery.min.js, bootstrap.min.js ajaxfileupload.js css文件 cropper.min.css,bootstrap.min.css htm

file API+JCrop 选择、裁剪并上传头像

file API,直接读取本地文件,绕过了后台处理再返回前台的过程,使编程更简单.fileAPI和JCrop的结合使用上传头像. 1.html部分 <input id="demo" type="file" onchange="showPic();"/> <img id="avatar" src=""> 2.fileAPI预览图片(jquery) <script type=&qu

jquery组件WebUploader文件上传用法详解

这篇文章主要为大家详细介绍了jquery组件WebUploader文件上传用法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件,下文来为各位演示一下关于jquery WebUploader文件上传组件的用法. 使用WebUploader还可以批量上传文件.支持缩略图等等众多参数选项可设置,以及多个事件方法可调用,你可以随心所欲的定制你要的上传组件. 接下来我以图片上

刚完成的一个上传头像模块,望指点(含详细代码)

file API,直接读取本地文件.fileAPI和JCrop的结合使用上传头像. 1.html部分 <input id="demo" type="file" name="file" onchange="showPic();"/> <img id="avatar" src="" style="width:200px"> 2.fileAPI预览图

[实战]MVC5+EF6+MySql企业网盘实战(4)——上传头像

写在前面 最近又开始忙了,工期紧比较赶,另外明天又要去驾校,只能一个功能一个功能的添加了,也许每次完成的功能确实不算什么,等将功能都实现了,然后在找一个好点的ui对前端重构一下. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySql企业网盘实战(1) [实战]MVC5+EF6+MySql企业网盘实战(2)——用户注册 [实战]MVC5+EF6+MySql企业网盘实战(3)——验证码 [实战]MVC5+EF6+MySql企业网盘实战(4)—

WebAPI实现移动端上传头像接口

测试时可以直接使用PostMan模拟发送请求 /// <summary> /// 手机端上传头像接口 /// </summary> /// <param name="LoginToken"></param> /// <param name="Base64String"></param> /// <returns></returns> [HttpPost] public a

妈蛋:kinMaxShow轮播图异常,WebUploader图片上传坑爹,图片被压缩了

今天晚上在改造轮播图. 原来的代码是这样的: <div> <img src="${static}/image/index/banner/`.jpg" /> </div> <div> <img src="${static}/image/index/banner/2.jpg" /> </div> <div> <img src="${static}/image/index/

相册选择头像或者拍照 上传头像以NSData 图片二进制格式 表单上传

一.点击头像图片 或者按钮 在相册选择照片返回img,网络上传头像要用data表单上传 (1)上传头像属性 // 图片二进制格式 表单上传 @property (nonatomic, strong) NSData *imageWithData; (2)头像点击事件 - (void)headImageEvent{ NSLog(@"上传头像"); [self selectPhotoAlbumWithSelectPhotoHandle:^(UIImage *img) { self.heade

妈蛋:kinMaxShow旋转木马异常,WebUploader图片上传坑爹,图像被压缩

今天晚上在改造轮播图. 原来的代码是这种: <div> <img src="${static}/image/index/banner/`.jpg" /> </div> <div> <img src="${static}/image/index/banner/2.jpg" /> </div> <div> <img src="${static}/image/index/b