您当前的位置: 首页 > 

wespten

暂无认证

  • 0浏览

    0关注

    899博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

webupload附件上传插件的开发与代码编写

wespten 发布时间:2018-10-25 15:45:12 ,浏览量:0

webupload附件上传插件的开发与代码编写

引入

document.write('');
document.write('');

使用插件

  
                
                        
                          上传附件:
                            
                        
                    
  


$("#attchmentId").webupload({ disabled: false, preview: false });
		if (pagetype == "show") {
			 $("input").attr("readonly", "readonly");
	            $(".easyui-combobox").combo('readonly', true);
	            $(".easyui-combotree").combotree('readonly', true);
	            $('.easyui-textbox').textbox('readonly');
	            $(".easyui-my97").my97('disable');
	            $("#attchmentId").webupload({ disabled: true, preview: true });
		}
(function (window, $, undefined) {
var _Core = function () {};
  window.$Core = new _Core();

    var config = function () {
        return {
            //附件上传单文件大小限制
            WebUpload_fileSingleSizeLimit: 50 * 1024 * 1024,
            //ajax请求超时时间
            ajaxTimeout: 500000
        };
    };
    $Core.Config = new config();
})(window, jQuery);
(function ($) {
    var DOWN_PATH = $Core.SERVICEPATH() + "plugs/attachment/get/";
    var UP_PATH = $Core.SERVICEROOT() + 'zuul/plugs/attachment/fileUpload';
    //WebUploader.Uploader.register({
    //    "before-send-file": "beforeSendFile"
    //}, {
    //        beforeSendFile: function (file) {

    //            var task = new $.Deferred();
    //            (new WebUploader.Uploader()).md5File(file, 0, 10 * 1024 * 1024).progress(function (percentage) {

    //            }).then(function (val) {
    //                //console.log("用时:" + ((new Date()).getTime() - d1.getTime()));
    //                console.log(file.id + "md5:" + val);
    //                //task.reject();
    //                task.resolve();
    //            });
    //            return $.when(task);
    //        }
    //    });

    function create(target) {
        var state = $.data(target, 'webupload');
        var opts = state.options;

        var t = $(target);
        var $htmlUpload = t.next().find(".uploader");
        if (!t.hasClass("webupload-f")) {
            t.addClass("webupload-f");
            var name = t.attr("name");
            t.attr("textboxname", name).removeAttr("name");
            var $textbox = $('');
            $textbox.attr("name", name);

            $htmlUpload = $('
' + '
' + '
上传文件
' + //'开始上传 ' + //'全部重试 ' + // '' + // ' 清空所有' + '
' ); $htmlUpload.append($textbox); t.hide(); t.after($htmlUpload); var $command = $htmlUpload.find(".command"); var $picker = $htmlUpload.find(".uploader-picker"); var $uploaderList = $htmlUpload.find(".uploader-list"); opts.pick = $picker[0]; var uploader = WebUploader.create(opts); uploader.on('uploadBeforeSend', function(object, data, header) { var user = $Core.USER(); header = $.extend(header, { 'token': user.TOKEN, 'appid': user.APP_ID }); }); //当文件被加入队列以后触发。 uploader.on('fileQueued', function(file) { if (file.size > $Core.Config.WebUpload_fileSingleSizeLimit) { alert(file.name + "单文件不能超过" + WebUploader.Base.formatSize($Core.Config.WebUpload_fileSingleSizeLimit, 0)); uploader.removeFile(file, true); return false; } var $li = createFileItem(uploader, file, opts); $uploaderList.append($li); }); //当文件被移除队列后触发。 uploader.on("fileDequeued", function(file) { $("#" + file.id).fadeOut(function() { $(this).remove(); changevalue(target); }); //console.log(file); }); // 文件上传过程中创建进度条实时显示。 uploader.on('uploadProgress', function(file, percentage) { var $li = $('#' + file.id), $percent = $li.find('.progress span'); //console.log("percentage:", percentage); // 避免重复创建 if (!$percent.length) { $percent = $('

') .appendTo($li) .find('span'); } $percent.css('width', percentage * 100 + '%'); }); // 文件上传成功,给item添加成功class, 用样式标记上传成功。 uploader.on('uploadSuccess', function(file, response) { //console.log(response); var $fileitem = $('#' + file.id); if (response.code != undefined && response.code === 0) { //response.data.attachmentId $fileitem.attr("attachmentId", response.data.attachmentId); var $attachmentsize = $fileitem.find(".attachment-size"); $attachmentsize.append(' ' + ' ' + ''); } $fileitem.addClass('upload-state-done').find(".error").remove(); changevalue(target); }); // 文件上传失败,现实上传出错。 uploader.on('uploadError', function(file, reason) { //console.log(reason); var $li = $('#' + file.id), $error = $li.find('div.error'); // 避免重复创建 if (!$error.length) { $error = $('
').appendTo($li); "".format("123"); } $error.text('上传失败' + reason); }); // 完成上传完了,成功或者失败,先删除进度条。 uploader.on('uploadComplete', function(file) { $('#' + file.id).find('.progress').remove(); }); //当所有文件上传结束时触发。 uploader.on("uploadFinished", function() { }); state.uploader = uploader; } if (opts.disabled === true) { disable(target); } else { enable(target); } if (opts.preview === false) { $htmlUpload.find(".uploader-list").addClass("nopreview"); } } /* ' ' + ' ' + '' + * / /** * * @param {any} uploader * @param {any} file */ function createFileItem(uploader, file, opts) { var $li = $(( '
' + '' + '
' + ' ' + '{1} ' + ' ' + '{2} ' + '' + '' + '' + '' + '
' + '
').format(file.id, file.name, WebUploader.Base.formatSize(file.size)) ), $close = $li.find(".filedel"), $attachmentIcon = $li.find(".mailbox-attachment-icon"), $attachmentIcon_icon = $attachmentIcon.find(".fa"), $attachmentsize = $li.find(".attachment-size") ; if (file.attachmentId) { $li.attr("attachmentId", file.attachmentId); $attachmentsize.append(' ' + ' ' + ''); } $close.click(function () { var fileId = $(this).parent().parent().parent().attr("id"); //alert(fileId); //uploader.cancelFile(fileId); uploader.removeFile(fileId, true); }); //var iconclass = "icon-new_file"; if (opts.preview === true) { switch (file.ext.toLowerCase()) { case "gif": case "jpg": case "jpeg": case "bmp": case "png": $attachmentIcon.addClass("has-img").html(""); var $img = $("").appendTo($attachmentIcon); if (file.attachmentId) { $img.attr("src", DOWN_PATH + file.attachmentId); } else { uploader.makeThumb(file, function (error, src) { if (error) { $img.replaceWith('不能预览'); return; } $img.attr('src', src); }, 500, 460); } $img.click(function () { layer.open({ type: 1, title: false, closeBtn: 0, area: '50%', skin: 'layui-layer-nobg', //没有背景色 shadeClose: true, content: '' }); }); break; case "docx": case "dox": $attachmentIcon_icon.attr("class", "fa fa-file-word-o"); break; case "xlsx": case "xls": $attachmentIcon_icon.attr("class", "fa fa-file-excel-o"); break; case "pptx": case "ppt": $attachmentIcon_icon.attr("class", "fa fa-file-powerpoint-o"); break; case "zip": case "rar": $attachmentIcon_icon.attr("class", "fa fa-file-zip-o"); break; case "mp4": case "avi": case "mkv": case "mov": case "m4v": case "3gp": case "wmv": case "rm": case "rmvb": $attachmentIcon_icon.attr("class", "fa fa-file-video-o"); break; case "mp3": case "wma": case "wav": case "ape": case "aac": case "flac": $attachmentIcon_icon.attr("class", "fa fa-file-audio-o"); break; case "txt": case "text": $attachmentIcon_icon.attr("class", "fa fa-file-text-o"); break; default: $attachmentIcon_icon.attr("class", "fa fa-file-o"); break; } } else $attachmentIcon.hide(); return $li; } function changevalue(target) { var t = $(target); var htmluploader = t.next(); var uploderList = htmluploader.find(".uploader-list"); var $textbox = htmluploader.find(".textbox-value"); var fileItems = uploderList.find("[attachmentId]"); var fileid = []; $.each(fileItems, function (i, item) { var n = $(item); fileid.push(n.attr("attachmentId")); }); $textbox.val(fileid.join(",")); } function getstate(target) { return $.data(target, 'webupload'); } function setValue(target, value) { var t = $(target); var state = getstate(target); var uploader = state.uploader; var opts = state.options; var $htmlUpload = t.next().find(".uploader-list"); $htmlUpload.empty(); if (value) { $.get("/plugs/attachment/getByIds/" + value, function (result) { if (result.data) { $.each(result.data,function (i, n) { if (n != null) $htmlUpload.append(createFileItem(uploader, { id: n.attachmentId, name: n.fileName, size: n.fileSize, attachmentId: n.attachmentId, ext: n.attachmentType.replace(".", "") }, opts)); }); //t.combo("setText", fileNames.join(",")); } changevalue(); }); } changevalue(); t.next().find(".textbox-value").val(value); } function getValue(target) { var t = $(target); //otps = $.data(target, 'webupload'), // uploader = otps.uploader; var htmluploader = t.next(); var $textbox = htmluploader.find(".textbox-value"); return $textbox.val(); } function isInProgress(target) { var t = $(target); var state = getstate(target), uploader = state.uploader; return uploader.isInProgress(); } function disable(target) { var t = $(target); var state = getstate(target); var opts = state.options; opts.disabled = true; var htmluploader = t.next().find(".uploader"); htmluploader.addClass("disabled"); //htmluploader.find(".filedel").hide(); } function enable(target) { var t = $(target); var state = getstate(target); var opts = state.options; opts.disabled = false; var htmluploader = t.next().find(".uploader"); htmluploader.removeClass("disabled"); //htmluploader.find(".filedel").show(); } function getUploader(target) { var state = getstate(target); return state.uploader; } $.fn.webupload = function (options, param) { if (typeof options == "string") { var method = $.fn.webupload.methods[options]; if (method) { return method(this, param); } } options = options || {}; return this.each(function () { var state = $.data(this, "webupload"); if (state) { $.extend(state.options, options); } else { $.data(this, "webupload", { options: $.extend({}, $.fn.webupload.defaults, $.fn.webupload.parseOptions(this), options) }); } create(this); }); }; $.fn.webupload.methods = { options: function (jq) { var opts = $.data(jq[0], 'webupload').options; return opts; }, setValue: function (jq, value) { return jq.each(function () { setValue(this, value); }); }, getValue: function (jq) { return getValue(jq[0]); }, isInProgress: function (jq) { return isInProgress(jq[0]); }, disable: function (jq) { return jq.each(function () { disable(this); }); }, enable: function (jq) { return jq.each(function () { enable(this); }); }, uploader: function(jq) { return getUploader(jq[0]); } }; $.fn.webupload.parseOptions = function (target) { return $.extend({}, $.parser.parseOptions(target, [ "dnd", "disableGlobalDnd", "paste", "pick", "accept", "thumb", "compress", "runtimeOrder", "formData", "fileVal", "method", "sendAsBinary", { auto: "boolean", prepareNextFile: "boolean", chunked: "boolean", duplicate: "boolean", preview: "boolean" }, { chunkSize: "number", chunkRetry: "number", threads: "number", fileNumLimit: "number", fileSizeLimit: "number", fileSingleSizeLimit: "number" } ])); }; $.fn.webupload.defaults = { // swf文件路径 swf: '/Content/webuploader/Uploader.swf', // 文件接收服务端。 server: UP_PATH, // 选择文件的按钮。可选。 // 内部根据当前运行是创建,可能是input元素,也可能是flash. //pick: '#picker', // 自动上传。 auto: true, //compress: { // // 图片质量,只有type为`image/jpeg`的时候才有效。 // quality: 95, // // 是否允许放大,如果想要生成小图的时候不失真,此选项应该设置为false. // allowMagnify: false, // // 是否允许裁剪。 // crop: false, // // 是否保留头部meta信息。 // preserveHeaders: true, // // 如果发现压缩后文件大小比原来还大,则使用原来图片 // // 此属性可能会影响图片自动纠正功能 // noCompressIfLarger: false, // // 单位字节,如果图片大小小于此值,不会采用压缩。 // compressSize: 0 //}, //chunked: true, fileVal: "fileName", preview: true, //是否显示图标预览 prepareNextFile: true, accept: [{ title: 'file', extensions: 'doc,docx,pdf,xls,xlsx,ppt,pptx,gif,jpg,jpeg,bmp,png,rar,zip,txt,text', mimeTypes: '.doc,.docx,.pdf,.xls,.xlsx,.ppt,.pptx,.gif,.jpg,.jpeg,.bmp,.png,.rar,.zip,.txt,.text' }] //单文件限制大小 //fileSingleSizeLimit: 1024 * 1024 * 5, }; $.parser.plugins.push("webupload"); if ($.fn.form) { $.fn.form.defaults.fieldTypes.unshift("webupload"); //$.array.insert($.fn.form.comboList, 0, "my97"); } })(jQuery);
@Controller
@RequestMapping("/attachment")
public class AttachmentController  extends BaseController {
	@Autowired
	private AttachmentVOService attachmentVOService;
	/**
     * 实现文件上传
     * */
    @RequestMapping("fileUpload")
    @ResponseBody
    public AssembleJSON fileUpload(@RequestParam("fileName") MultipartFile file){
        AssembleJSON json = null;
        if(file.isEmpty()){
           throw new CntenException(this,"-001","文件获取失败");
        }
        Attachment attachment = null;
        try {
            attachment = saveAttachment(file);
            json = AssembleJSON.SUCCESS(attachment);
        } catch (Exception e) {
            //e.printStackTrace();
            json = AssembleJSON.FAILURE("附件存储异常",e.getMessage());
        }
        return json;
    }


    public Attachment saveAttachment(MultipartFile file) throws Exception{
        Attachment attachment = new Attachment();
        attachment.setFileName(file.getOriginalFilename());
        String fileType = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."),file.getOriginalFilename().length());
        attachment.setAttachmentType(fileType);
        attachment.setIsDelete(0);
        //attachment.setUserId(getCurrUserData().getUserId());
        attachment.setAttachmentContent(file.getBytes());
        attachment.setFileSize((int)file.getSize());
        attachment.setCreateDate(new Date());
        attachment =  service.insert(attachment);
        attachment.setAttachmentContent(null);
        return attachment;
    }

    /**
     * 实现多文件上传
     *
     * 多文件上传,只返回成功。返回结果包含多个文件存储的结果,如果某个结果为null 就证明该文件存储失败
     * */
    @RequestMapping("multiFileUpload")
    @ResponseBody
    public AssembleJSON multiFileUpload(HttpServletRequest request){
        List files = ((MultipartHttpServletRequest)request).getFiles("fileName");
        if(files.size()windowH*scale) {//判断图片高度
            imgHeight = windowH*scale;//如大于窗口高度,图片高度进行缩放
            imgWidth = imgHeight/realHeight*realWidth;//等比例缩放宽度
            if(imgWidth>windowW*scale) {//如宽度扔大于窗口宽度
                imgWidth = windowW*scale;//再对宽度进行缩放
            }
        } else if(realWidth>windowW*scale) {//如图片高度合适,判断图片宽度
            imgWidth = windowW*scale;//如大于窗口宽度,图片宽度进行缩放
            imgHeight = imgWidth/realWidth*realHeight;//等比例缩放高度
        } else {//如果图片真实高度和宽度都符合要求,高宽不变
            imgWidth = realWidth;
            imgHeight = realHeight;
        }
        $(bigimg).css("width",imgWidth);//以最终的宽度对图片缩放

        var w = (windowW-imgWidth)/2;//计算图片与窗口左边距
        var h = (windowH-imgHeight)/2;//计算图片与窗口上边距
        $(innerdiv).css({"top":h, "left":w});//设置#innerdiv的top和left属性
        $(outerdiv).fadeIn("fast");//淡入显示#outerdiv及.pimg
    });

    $(outerdiv).click(function(){//再次点击淡出消失弹出层
        $(this).fadeOut("fast");
    });
}

    $("#upload").click(function () {
        var imgId = $("#imgId").val();
        if(imgId == null || imgId == ""){
            //未上传过
            var formData = new FormData();
            formData.append("fileName", $("[name=fileName]")[0].files[0]);
            $.ajax({
                url: _self.uploadUrl,
                type: "POST",
                data: formData,
                /**
                 *必须false才会自动加上正确的Content-Type
                 */
                contentType: false,
                /**
                 * 必须false才会避开jQuery对 formdata 的默认处理
                 * XMLHttpRequest会对 formdata 进行正确的处理
                 */
                processData: false,
                success: function (data) {
                    if (data.code == 0) {
                        var attachmentId = data.data.attachmentId;
                        $Core.UI.message.success("上传成功!");
                        $("#imgId").val(attachmentId);
                        setImgPreview(attachmentId);
                    }
                    if (data.code != 0) {
                        $Core.UI.message.warning(data.msg);
                    }
                },
                error: function () {
                    $Core.UI.message.success("上传失败!");
                }
            });
        }else{
            //上传过,进行修改
            var id = $("#id").val();
            if(id == null || id == ""){
                //进行的是添加操作
                var formData = new FormData();
                formData.append("fileName", $("[name=fileName]")[0].files[0]);
                $.ajax({
                    url: _self.uploadUrl,
                    type: "POST",
                    data: formData,
                    /**
                     *必须false才会自动加上正确的Content-Type
                     */
                    contentType: false,
                    /**
                     * 必须false才会避开jQuery对 formdata 的默认处理
                     * XMLHttpRequest会对 formdata 进行正确的处理
                     */
                    processData: false,
                    success: function (data) {
                        if (data.code == 0) {
                            var attachmentId = data.data.attachmentId;
                            $.post("plugs/attVO/del?ids=" + imgId, function (data) {
                                $("#imgId").val(attachmentId);
                                setImgPreview(attachmentId);
                                $Core.UI.message.success("上传成功!");
                            });
                        }
                        if (data.code != 0) {
                            $Core.UI.message.warning(data.msg);
                        }
                    },
                    error: function () {
                        $Core.UI.message.success("上传失败!");
                    }
                });
            }else{
                //进行的是修改操作
                $.messager.confirm("提示","上传后原有图片将删除,是否上传",function (r) {
                    if(r) {
                        var formData = new FormData();
                        formData.append("fileName", $("[name=fileName]")[0].files[0]);
                        $.ajax({
                            url: _self.uploadUrl,
                            type: "POST",
                            data: formData,
                            /**
                             *必须false才会自动加上正确的Content-Type
                             */
                            contentType: false,
                            /**
                             * 必须false才会避开jQuery对 formdata 的默认处理
                             * XMLHttpRequest会对 formdata 进行正确的处理
                             */
                            processData: false,
                            success: function (data) {
                                if (data.code == 0) {
                                    var attachmentId = data.data.attachmentId;
                                    $.post("security/publicservicesuser/upd",{"id":id,"imgId":imgId}, function (data) {
                                        $("#imgId").val(attachmentId);
                                        $Core.UI.message.success("上传成功!");
                                        setImgPreview(attachmentId);
                                        //删除原有数据
                                        $.post("plugs/attVO/del?ids=" + imgId, function (data) {
                                        });
                                    });
                                }
                                if (data.code != 0) {
                                    $Core.UI.message.warning(data.msg);
                                }
                            },
                            error: function () {
                                $Core.UI.message.success("上传失败!");
                            }
                        });
                    }
                });
            }
        }
    });

    function setImgPreview(imgId) {
        var imghtml = '照片预览:'+
            ''+
            ''+
            ''
        $("#picPreview").html(imghtml);
        //查看大图
        $("#pimg").on('click',function(){
            var _this = $(this);//将当前的pimg元素作为_this传入函数
            imgShow("#outerdiv", "#innerdiv", "#bigimg", _this);
        });
    }
    
保存

 

关注
打赏
1665965058
查看更多评论
立即登录/注册

微信扫码登录

0.0447s