layui上传附件与控制附件大小

layui上传附件控制上传附件大小

	layui.use('upload', function(){
			  var upload = layui.upload;
			  var that = new Object();
			  that.settings = {};
			  that.settings.bindAction="#dealPicture_Action";
			  that.settings.elem="#dealPicture";
			  that.settings.entityName="advice";
			  that.settings.fieldCode="dealPicture";
              that.settings.fieldName="上传附件";
              that.settings.layuiUploadPreview="#dealPicture_preview";
              that.settings.previewTableBody = "#dealPicture_Preview_Table";
              that.settings.selfFiles = null;
              that.settings.url="/attach/upload";
			  //执行实例
			  var uploadInst = upload.render({
				    elem: that.settings.elem											//绑定元素
				    ,url: CONTEXT_PATH + that.settings.url 									//上传接口
				    ,accept:'file'
				    ,data:{																	//上传参数
				    	"entityName" : that.settings.entityName,							//业务实体
				    	"fieldCode" : that.settings.fieldCode,								//业务字段编码
				    	"fieldName" : that.settings.fieldName,								//业务字段名称
				    }								
				  	,auto:false												//是否选完文件后自动上传	如果设定 false,那么需要设置 bindAction 参数来指向一个其它按钮提交上传
				  	,size:0													//设置文件最大可允许上传的大小,单位 KB。不支持ie8/9;	0(即不限制)
				  	,multiple:true
				  	//是否允许多文件上传。设置 true即可开启。不支持ie8/9
				  	,bindAction: that.settings.bindAction					//指向一个按钮触发上传,一般配合 auto: false 来使用。值为选择器或DOM对象,如:bindAction: '#btn'
				    ,choose: function(res){									//选择文件后的回调函数
				    	debugger;
				    	var layIndex = layer.open({
				        	type: 1,
				        	title: "预览",
				        	maxmin: false,
				        	area : ['40%', '40%'],
				        	content:$(that.settings.layuiUploadPreview).removeAttr('style'),			//$.loadHtml(preUrl),
				        	success: function(layero){
				        		var demoListView = $(that.settings.previewTableBody).empty();
				        		var files = that.settings.selfFiles = res.pushFile(); //将每次选择的文件追加到文件队列
				        	      //读取本地文件
				        		res.preview(function(index, file, result){
				        			if((file.size/1024)>1024){
				        				layer.msg('上传的附件不能超过1M', {icon: 5});
				        				that.settings.selfFiles=null;
				        				delete files[index];
				        				layer.close(layIndex);
				        				return false;
				        			}
				        	        var tr = $(['<tr id="upload-'+ index +'">'
				        	          ,'<td>'+ file.name +'</td>'
				        	          ,'<td>'+ (file.size/1024).toFixed(1) +' kb</td>'
				        	          ,'<td name="upload-status">等待上传</td>'
				        	          ,'<td>'
				        	            ,'<button class="layui-btn layui-btn-mini demo-reload layui-hide">重传</button>'
				        	            ,'<button class="layui-btn layui-btn-mini layui-btn-danger demo-delete">删除</button>'
				        	          ,'</td>'
				        	        ,'</tr>'].join(''));
				        	        
				        	        //单个重传
				        	        tr.find('.demo-reload').on('click', function(){
				        	        	res.upload(index, file);
				        	        });
				        	        
				        	        //删除
				        	        tr.find('.demo-delete').on('click', function(){
				        	        	
					        	        delete files[index]; //删除对应的文件
					        	        tr.remove();
					        	        uploadInst.config.elem.next()[0].value = ''; //清空 input file 值,以免删除后出现同名文件不可选
					        	        if(Object.getOwnPropertyNames(files).length == 0){			//当上传预览没有文件时,关闭弹出框
					        	        	 layer.close(layIndex);
					        	        }
				        	        });
				        	        demoListView.append(tr);
				        	      });
				        	},
				        	end : function(){	//layer销毁回调
				        		$(that.settings.layuiUploadPreview).attr('style','display:none;');
				        		$(that.settings.previewTableBody).empty();
				        	},
				        	cancel: function(){ 		  //右上角关闭回调
				        	}
				        });
				    	
				    }
				  	,before: function(res){					//文件提交上传前的回调
				  		$("tr",$(that.settings.previewTableBody)).find("td[name='upload-status']").text("上传中...");
				  	}
				    ,done: function(res, index, upload){					//执行上传请求后的回调。返回三个参数,分别为:res(服务端响应信息)、index(当前文件的索引)、upload(重新上传的方法,一般在文件上传失败后使用)
				    	//上传完毕回调		"dealPicture_list_table"
				    	if(res && res.status == WebConst.SUCCESS){
				    		$(that.settings.bindAction).text("").text("上传成功");
				    		delete that.settings.selfFiles[index];
				    		//改变预览状态,将上传附件id存在	隐藏域中
				    		$("tr[id='upload-"+ index +"']",$(that.settings.previewTableBody)).find("td[name='upload-status']").text("附件缓存完毕,请点击提交上传附件");
				    		var unupload = $("#uploadAttachmentIds").data("uploadAttachmentIds");
				    		if(unupload){
				    			unupload.push(res.data['attachmentId']);
				    			$("#uploadAttachmentIds").data("uploadAttachmentIds",unupload);
				    		}else{
				    			if(res.data){
				    				$("#uploadAttachmentIds").data("uploadAttachmentIds",[res.data['attachmentId']]);
				    				/**
				    				 * 第一个方法赋不了值,通过下面的赋值
				    				 */
				    				$("#uploadAttachmentIds").val([res.data['attachmentId']]);
				    			}
				    		}
				    		
				    		//处理卡片页面列表展示问题
				    		var afile = res.data;
				    		var attachImg = "";
				    		if(!$.isEmptyStr(afile.fileName) && (afile.fileName.indexOf('docx')!=-1 
									 || afile.fileName.indexOf('doc')!=-1))
							 {
								 //attachImg = '<td><img src="' + CONTEXT_PATH +"platform/common/images/word.png" /></td>';
								 attachImg = '<td><img src="'+CONTEXT_PATH+ '/platform/common/images/word.png"' +'width="100" height="60" style="cursor:pointer;"/></td>';
							 }
							 else if(!$.isEmptyStr(afile.fileName) && afile.fileName.indexOf('pdf')!=-1)
							 {
								 attachImg = '<td><img src="'+CONTEXT_PATH+ '/platform/common/images/pdf.png"' +'width="100" height="60" style="cursor:pointer;"/></td>';
							 }
							 else
							 {
								 attachImg = '<td><img src="' + CONTEXT_PATH + '/attach/showPicture?attachmentId=' 
				          		 + afile.attachmentId + '&isThumbnail=true" max-width="120" width="100" height="60" style="cursor:pointer;"/></td>';
							 }
				    		var $tr = $(['<tr id="upload-'+ afile.attachmentId +'" attatchmentId="'+ afile.attachmentId +'">'
						          , attachImg
						          ,'<td>'+ afile.fileName +'</td>'
						          ,'<td>'+ afile.fileSize +' kb</td>'
						          ,'<td>'+ afile.createDate +'</td>'
						          ,'<td>'
						            ,'<a class="layui-btn layui-btn-mini demo-reload" href="'+  CONTEXT_PATH +'/attach/download?attachmentId='+ afile.attachmentId +'">下载</a>&nbsp;&nbsp;'
						            ,'<button class="layui-btn layui-btn-mini layui-btn-danger">删除</button>'
						          ,'</td>'
						        ,'</tr>'].join(''));
							  	$tr.find('button').on('click',function(){
							  		var attId = $(this).closest("tr").attr('attatchmentId');
							  		var url = CONTEXT_PATH + '/attach/delete/datafile';
							  		var rlt = $.getData(url,{'attachmentIds':attId});
									if(rlt && rlt.status == WebConst.SUCCESS){
										  $(this).closest("tr").remove();
										  $("#uploadAttachmentIds").data("uploadAttachmentIds").removeByValue(attId);
									  }
									return false;
							  	});
							  $("#" + afile.fieldCode + "_list_table").append($tr);
				    	}
				    }
			    ,error: function(index, upload){						//执行上传请求出现异常的回调(一般为网络异常、URL 404等)。返回两个参数,分别为:index(当前文件的索引)、upload(重新上传的方法)
			      //请求异常回调
			    }
			  });
			});

layui提交保存

		layui.form.on('submit(pre)', function(data){
			//处理 	KindEditor 富文本取值问题
			var formDoms = data["form"];
			for(i=0,len=formDoms.length; i<len; i++){
				var idom = data["form"][i],
					idomName = data["form"][i].name,
					tagName = idom.tagName,
					idomId = data["form"][i].id,
					keditor = _self[idomName];
				if(idom.tagName == "TEXTAREA" && keditor){
					keditor.sync();
					data.field[idomName]=base64.encode($('#'+idomId ).val());
				}
			}
			var retData = $.getData(_self.url, data.field);
			
			if(retData.status!=1000 || retData.status == WebConst.FAIL){
				layer.msg('保存失败', {icon: 5});
				return false;
			}
			//如果有附件,上传附件
			var uploadAttachmentIds = $("#uploadAttachmentIds").data("uploadAttachmentIds"),
				entityId = retData.data;
				$("input[name='"+ _self.primaryKey +"']").val(retData.data);
				if(!uploadAttachmentIds && data.field["uploadAttachmentIds"]){
					uploadAttachmentIds = data.field["uploadAttachmentIds"];
				}
			if(true && uploadAttachmentIds && entityId){
				var params = {};
				if(uploadAttachmentIds instanceof Array)
				{
                    params.attachmentIds = uploadAttachmentIds.join(",");
				}
				else
				{
                    params.attachmentIds = uploadAttachmentIds;
				}
				params.entityId = entityId;
				$.getData(CONTEXT_PATH + "/attach/updateEntityId", params);
			}
			 $("#uploadAttachmentIds").data("uploadAttachmentIds",null);
			//新增之前回调函数
			if(_self.afterSave && $.isFunction(_self.afterSave)){
				_self.afterSave(retData);
			}else{
				layer.msg('保存成功', {icon: 6});
			}
			return false;
		});
	//关闭卡片页面之前回调
	function beforeClose (){
		//如果涉及到文件上传,关闭卡片页面将未上传的附件进行删除
		var unuploadFiles = $("#uploadAttachmentIds").data("uploadAttachmentIds");
		if(unuploadFiles && unuploadFiles.length>0){
			var url = CONTEXT_PATH + '/attach/delete/datafile';
			$.getData(url,{'attachmentIds':unuploadFiles.join(",")});
		}
	}
扫描二维码关注公众号,回复: 3089882 查看本文章

猜你喜欢

转载自blog.csdn.net/qq_35029061/article/details/82398476