图片上传webuploader

/** * 基于jquery的图片上传控件 */!function ($) {    "use strict";    //定义上传事件    var upImgEvent = {        fileQueued: 'fileQueued',//文件加载的时候触发        //statusChange: 'statuschange',        uploadSuccess: 'uploadSuccess',//文件上传成功触发默认路径应该是固定的        uploadError: 'uploadError',//文件上传报错触发        error: 'error'//文件上传验证报错的时候触发,好比大小,上传重复图片    };    //定义内部使用函数    var _util = {        _isSupportImage: function () {            var data = new Image();            var support = true;            data.onload = data.onError = function () {                if (this.width != 1 || this.height != 1) {                    support = false;                }            };            data.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";            return support;        }(),        _renderHtml: function (file) {            return $('<div class="file_img" id="' + file.id + '">' +            '<div class="delete"><a href="javascript:deleteImg(\'' + file.id + '\',1)">删除</a></div>' +            '<span style="vertical-align: middle; display: inline-block; height: 100%;"></span>' +            '<img id="img' + file.id + '"  title="' + file.name + '" src="' + window.base + '/resources/images/loading_.gif" /> ' +            '<div id="wart" style="position:absolute;z-index:99;left:5px;top:10px;"><span style="color: blue">图片正在上传.请等待...</span><div>'+            '</div>')        },        _showError: function (code) {            $('body').hideLoading();            $("img").next().remove();            var text = null;            switch (code) {                case 'exceed_size':                    text = '文件太大了..请从新上传';                    break;                case 'interrupt':                    text = '上传暂停..';                    break;                default:                    text = '上传失败,请重试...';                    break;            }            alert(text);        }    };    var Img = function (element, options) {        var imgRadio = {            //图片属性            _ratio: function () {                if (window.devicePixelRatio) {                    return window.devicePixelRatio;                } else {                    return 1;                }            },  //像素比例            thumbWidth: 140 * this._ratio,            thumbHeight: 140 * this._ratio        };        //构造默认options        var defaultOption = {            packId:"#"+options.packId,            swf: window.base + '/resources/js/webuploader/Uploader.swf',//ie6,7,8 须要flash支持,默认优先Html5            server: "http://localhost:8080/person"+options.uploadPath,//文件上传的服务器路径            pick: {                id: "#"+options.uploaderId,                multiple: options.isMultiple//是否单选            },            duplicate: true,//能够重复            sendAsBinary: true,//android4 有些机型必须开启 为了兼容 都启用这种模式            auto: true,//开启选择图片自动上传            fileVal: 'bin',//文件上传字段名称            fileSingleSizeLimit: 10 * 1024 * 1024,  //10M 单个图片只能最大10M            disableGlobalDnd: true,//不能拖拽            accept: {                //上传图片所支持的类型                title: "上传图片",                extensions: 'gif,jpg,jpeg,bmp,png',                mimeTypes: 'image/*'            },            resize: false,//不压缩image, 默认若是是jpeg,文件上传前会压缩一把再上传!            //压缩            compress: {                width: 1600,                height: 1600,                // 图片质量,只有type为`image/jpeg`的时候才有效。                quality: 90,                // 是否容许放大,若是想要生成小图的时候不失真,此选项应该设置为false.                allowMagnify: false,                // 是否容许裁剪。                crop: false,                // 是否保留头部meta信息。                preserveHeaders: true,                // 若是发现压缩后文件大小比原来还大,则使用原来图片                // 此属性可能会影响图片自动纠正功能                noCompressIfLarger: false,                // 单位字节,若是图片大小小于此值,不会采用压缩。                compressSize: 1024 * 1024 * 1            },            callback:undefined || options.callback,            success:undefined || options.success        };        this.init(defaultOption,imgRadio);    };    Img.prototype.init = function (options,radio) {        var uploader = WebUploader.create(options);        //构造监听事件        uploader.on(upImgEvent.fileQueued, function (file) {            $('body').showLoading();            $(options.pick.id).showLoading();            if (file.getStatus() === 'invalid') {                _util._showError(file.statusText);            }            if(options.callback!=undefined && options.callback instanceof Function){                this.makeThumb(file, function (error, src) {                    if (error) {                        console.log("can not preview :" + error);                        return;                    }                    if (_util._isSupportImage) {                        options.callback.apply(this,[file,src]);                    }                }, radio.thumbWidth, radio.thumbHeight);            }else{                var html = _util._renderHtml(file);                //构造预览图                this.makeThumb(file, function (error, src) {                    var img = $("#img" + file.id);                    if (error) {                        console.log("can not preview :" + error);                        return;                    }                    if (_util._isSupportImage) {                        img.empty().attr('src', src);                    }                }, radio.thumbWidth, radio.thumbHeight);                html.appendTo($(options.packId));            }        });        uploader.on(upImgEvent.uploadSuccess, function (file, response) {            if (response.success) {                $('body').hideLoading();                $(options.pick.id).hideLoading();                $("img").next().remove();                var imgResponse = response.data;                if(options.success!=undefined && options.success instanceof Function){                    options.success.apply(this,[file,imgResponse]);                }            }else{                $('body').hideLoading();                $("img").next().remove();                alert(response.msg);            }        });        uploader.on(upImgEvent.uploadError, function (file) {            $('body').hideLoading();            $("img").next().remove();            alert("文件上传失败" + file.name);        });        uploader.on(upImgEvent.error, function (code) {            $('body').hideLoading();            $("img").next().remove();            if (code === 'F_DUPLICATE')                alert("文件已经存在.请换个图片从新上传...");            else if (code === 'F_EXCEED_SIZE')                alert("文件不能超过10M,请从新上传");            else if (code === 'Q_TYPE_DENIED')                alert("文件类型只能是图片类型,请从新上传");            else                alert("error type :" + code);        });    };    $.webUploader = function (options) {        return new Img(this, options);    }}(window.jQuery);function deleteImg(id, type){    $("#" + id).remove();    //若是是sybd则显示上传插件    if (type == 1) {        $("#sybd").parent().show();    }}
相关文章
相关标签/搜索