文件上传时用window弹窗第二次以后fieldLabel值显示重复

今天在项目中遇到一个棘手的问题,在上传附件的时候,window弹窗,第一次的时候是正常的,win.hide() 后,第二次fieldLabel值会重复显示,如下图:

因为window窗口中只有“附件”重复了,“备注”字段没有重复,所以怀疑是因为“附件”的写法有问题

“附件”字段对应的代码如下,用的   inpuType:‘file‘

			       name : "uploadFile",
//    				id : "uploadFile",
    				inputType : 'file',
    				fieldLabel : "<font color='red'>*</font>附件",
    				style :"margin:4px",
    				height : 20,
    				 buttonText: '浏览',
    				allowBlank : false,
    				blankText : "附件不能为空",
    				emptyText : "请选择附件..."

现在改变文件类型的写法,

inputType : ‘file‘  改成  xtype:‘fileuploadfield‘

由于程序中用的dwr,这样改后无法上传文件,具体原因可以参考另一篇博客,有具体的修改方式

这样再次打开window后显示正常:

详细代码如下:

 <span style="white-space:pre">	</span>
js代码
//文件panel
	  fileFormPanel = new Ext.form.FormPanel({
				name : "fileFormPanel",
				id : "fileFormPanel",
				labelWidth : 70,
				defaultType : "textfield",
				baseCls : 'x-plain',
				bodyStyle : 'padding:5px 5px 0',
				width : 390,
				buttonAlign:'center',
				fileUpload: true
				loadMask : new Ext.LoadMask(Ext.getBody(), {
        			msg : '请稍候,正在查询....'
        		}),
        		waitMsg : '请稍候,正在查询....',
        		onSubmit: Ext.emptyFn,
				border : false,
				defaults : {
					width : 230
				},
				items : [
				{
				    name : "uploadFile",
//    				id : "uploadFile",
//    				inputType : 'file',
    				xtype:'fileuploadfield',
    				fieldLabel : "<font color='red'>*</font>附件",
    				style :"margin:4px",
    				height : 20,
    				 buttonText: '浏览',
    				allowBlank : false,
    				blankText : "附件不能为空",
    				emptyText : "请选择附件..."
				}
				,{
				    name : 'fileRemark',
				    id : 'fileRemark',
				    xtype : 'textarea',
                    fieldLabel: '备注',
                    collapsible : true,
                    style : 'margin:4px;margin-bottom:10px;',
                    width : 230,
                    height: 100
				}],
				buttons : [{
				            name : 'fileSureBtn',
				            id : 'fileSureBtn',
							text : "确定",
							handler : function(){
							    if (!fileWin.getComponent('fileFormPanel').form.isValid()) {
                        		    selInfo("请完整填写表单!");
                        		    return;
                        	    }

                        	    //取消遮罩
                        	    //fileFormPanel.getEl().mask('请稍后,正在上传附件……');
                    		    //进度框
                    		    Ext.Msg.wait('请稍后,正在上传附件……', '', {animate : true});

			           var uploadFile = fileFormPanel.getForm().findField("uploadFile").getValue();
				   var remark = fileFormPanel.getForm().findField("fileRemark").getValue();

                        	    //当前节点对象
                        	    var row =grid.getSelectionModel().getSelected();//获取一行
                        	    var fId = row.get('FolderId');
                        	    var dId = row.get('DocId');

                        	    var file = dwr.util.getValue("uploadFile"); 

                        	    //构造参数对象
                        	    var parObj = {
                        	        docId : dId,
                        	        folderId : fId,
                        	        fileCode : '',   //附件编码先不做(预留字段)
                        	        fileName : fileName,        //文件的名称
                        	        uploadFile : uploadFile,    //上传的文件全路径
                        	        userId : userId,
                        	        remark : remark
                        	    };
                        	    //调用DWR方法
                        	    FolderHandlerBean.createFile(file,parObj,function(data){
                        	        if(data.flag == '1'){
                        	        	alert("111");
                        	            //隐藏窗口
//                        	        	Ext.getCmp('uploadFile').setValue('');
                        	        	fileFormPanel.getForm().findField("uploadFile").setValue('');
                                	    fileWin.hide();

                                	    //刷新grid
//                        	            selOk(data.msg);
                                	    Ext.MessageBox.show({
											title : '提示',
											msg : '添加成功!',
											modal : true,
											buttons : Ext.Msg.OK,
											icon : Ext.Msg.INFO,
											width : 200,
											fn : function() {
												fileGrid.getStore().reload();
											}
										});
                                    }else{
                                    	Ext.getCmp('uploadFile').setValue('');
                                    	fileWin.hide();
                                        selError(data.msg);
                                    }
                        	    });
							}
						}, {
							text : "取消",
							handler : function() {
								//清除数据
								Ext.getCmp('uploadFile').setValue('');
								Ext.getCmp('fileRemark').setValue('');
								//隐藏窗口
								fileWin.hide();
							}
						}]
	});

	//文件窗口
	 fileWin = new Ext.Window({
	    id : "fileWin",
		title : "附件编辑",
		width : 460,
		height : 450,
		bodyStyle : 'padding:5px;',
		maximizable : false,
		closeAction : 'hide',
		closable : true,    //是否关闭
		collapsible : true, //是否可以收缩
		draggable : true,   //是否可以拖拽
		resizable : false,  //是否可以调整大小
		modal : true,       //是否遮罩(true的时候,后面的页面不能使用)
		buttonAlign : "center",
		items : fileFormPanel
	});

java实现类

	/**
	 * DWR方式进行文件上传
	 * **/
	public Map createFile(FileTransfer ft,Map pMap){
		log.info("------------------>调用DWR方法createFile()...");
		Map retMap = new HashMap();
		Connection con = null;
		Statement st = null;
		ResultSet rs = null;
		try {
			String docId = ToolUtil.null2Empty(pMap.get("docId"));
			String folderId = ToolUtil.null2Empty(pMap.get("folderId"));
			String fileCode = ToolUtil.null2Empty(pMap.get("fileCode"));
			//String fileName = ToolUtil.null2Empty(pMap.get("fileName"));
			String uploadFile= ToolUtil.null2Empty(pMap.get("uploadFile"));
			int haveEndInt = uploadFile.lastIndexOf("\\");
			int pointInt = uploadFile.lastIndexOf(".");
			String fileName = uploadFile.substring(haveEndInt+1,pointInt);

			String userId = ToolUtil.null2Empty(pMap.get("userId"));
			String remark = ToolUtil.null2Empty(pMap.get("remark"));

			log.info("---------------->uploadFile="+uploadFile);

			//dwr获得session值
			WebContext ctx = WebContextFactory.get();
			HttpServletRequest request = ctx.getHttpServletRequest();
			HttpSession session = request.getSession();
			String sessionUserId = (String)session.getAttribute("sessionUserId");

			ServletContext application = session.getServletContext();
			String applicationUserId = (String) application.getAttribute("applicationUserId");

			DBPoolUtil db = new DBPoolUtil();
			con = db.getConnection();
			st = con.createStatement();
			//根据目录,查询路径
			rs = st.executeQuery("SELECT '/'||REPLACE(F.FULL_CODE,'-','/'),PDS_PUB_SEQ.NEXTVAL FROM PDS_FOLDER F WHERE F.FOLDER_ID = '"+folderId+"'");
			String path = "";
			long fileId = 0;
			if(rs.next()){
				path = rs.getString(1);
				fileId = rs.getLong(2);
			}

			//获取文件的后缀
			String ext=uploadFile.substring(uploadFile.lastIndexOf(".")).toLowerCase(); 

			//创建新文件的名称,以ID的形式命名
			String newFileName = fileId+ext;

			//构造工作流
			InputStream is = ft.getInputStream();

			//FTP上传文件
			log.info("上传path-------------》" + path +"\n newFileName:=" + newFileName);
			retMap = fhm.uploadFile(path, newFileName, is);

			if("0".equals(retMap.get("flag"))){
				return retMap;
			}

			String insertPath = (String) retMap.get("filePath");
			//调用存储过程,删掉该目录下的所有的子目录及其附件
			CallableStatement cs = con.prepareCall("{call PDS_BASE_PKG.P_ADD_FILE(?,?,?,?,?,?,?,?,?,?)}");
			//参数赋值
			cs.setLong(1, fileId);
			cs.setLong(2, Long.valueOf(docId));
			cs.setLong(3, Long.valueOf(folderId));
			cs.setString(4, fileCode);
			cs.setString(5, fileName);
			cs.setLong(6, Long.valueOf(userId));
			cs.setString(7, remark);
			cs.setString(8, newFileName);
			cs.setString(10, insertPath);

			//返回类型赋值类型
			cs.registerOutParameter(9, Types.VARCHAR);
			//执行存储过程
			cs.execute();

			//获取返回参数
			String ret = cs.getString(9);
			log.info("----------->调用存储过程后,返回值:"+ret);

			if("0".equals(ret)){
				con.rollback();
				retMap.put("flag", "0");
				retMap.put("msg", "后台异常,调用存储过程失败,请查看返回参数类型是否正确!");
				return retMap;
			}
			//提交事务
			con.commit();

			cs.close();
			con.close();

		} catch (Exception e) {
			log.error(e.getMessage(),e);
			retMap.put("flag", "0");
			retMap.put("msg", "系统错误,请与管理员联系!");
			return retMap;
		}finally{
			try {
				if(rs!=null){rs.close();}
				if(st!=null){st.close();}
				if(con!=null){con.close();}
			} catch (SQLException e) {
				log.error(e.getMessage(),e);
			}
		}

		retMap.put("flag", "1");
		retMap.put("msg", "保存成功!");
		return retMap;
	}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-25 16:03:03

文件上传时用window弹窗第二次以后fieldLabel值显示重复的相关文章

Extjs中用dwr实现文件上传时,fileuploadfield不能正常显示的问题

当使用DWR调用Extjs的fileuploadfield 来做文件上传时,不能实现上传操作,需要修改dwr对应jar包中的engine.js文件 将1808行 var clone =value.cloneNode(true); 1812行  value.parentNode.insertBefore(clone,value); 注释掉 通过  var file = dwr.util.getValue("uploadFile");  获取fileuploadfield 对应的值 版权声

wcf文件上传时碰到的配置问题

1.远程服务器返回了意外相应:(413) Request Entity Too Large 修改客户端配置maxReceivedMessageSize="2147483647" <bindings> <basicHttpBinding> <binding name="BasicHttpBinding_WcfService" maxBufferSize="2147483647" maxReceivedMessageSi

用Struts2实现文件上传时显示进度条功能

最近在做一个资源共享的项目中,采用了Struts2.1.8+Spring2.5.6+hibernate3.32的框架整合方式进行开发.在文件上传这块,因为需要实现文件上传时显示进度条的功能,所以尝试了一下.怕以后忘记,先贴出来分享下.   要在上传文件时能显示进度条,首先需要实时的获知web服务端接收了多少字节,以及文件总大小,这里我们在页面上使用AJAX技术每一秒向服务器发送一次请求来获得需要的实时上传信息.但是当我们使用struts2后怎么在服务端获得实时的上传大小呢?这里需要用到commo

文件上传时异常Invalid field value for field &quot;**&quot;与enctype=&quot;multipart/form-data&quot;

在做文件上传时,有一个form标签的属性必须要加上. 文件上传的form若如下面所写,则会报异常:Invalid field value for field "**",原因是:表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码.默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传:只有使用了multipart/form-data,才能完整的传递文件数据,进行下面的操

jQuery插件AjaxFileUpload实现ajax文件上传时老是执行error方法 问题原因

今天在用jQuery插件AjaxFileUpload实现ajax文件上传时,遇到一个问题,如图: 老是执行error,无法执行succes方法,追踪ajaxfileupload.js源码发现: 当执行if(type=="json")    eval("data = "+data);会抛出异常,导致在处理异常的时候将status = "error" 因此一直执行error方法. 上网查询,得知eval函数是用来执行一段js代码,而并不是如我所想的反

文件上传时,上传到webapps目录下的文件会自动删除

1:文件上传时,上传到webapps目录下的文件会自动删除的原因? tomcat目录下的webapps 文件夹是部署目录,当重新部署服务,上传的文件不在部署文件的范畴内,即此时开发工具中没有上传的文件,所以上传的文件就没有了. 2:解决方法 把文件上传路径设置到webapps目录之外,可以在Tomcat目录下建立一个文件夹,如:upload 3:简单实现 html文件: <!DOCTYPE html> <html> <head> <meta charset=&qu

电脑总是在另存文件或者打开文件上传时的对话框卡死怎么办?

电脑总是在另存文件或者打开文件上传时的对话框卡死几分钟才会好? 困惑了好久的问题,今天要解决了,原来是主题搞的鬼,因为喜欢 机器人总动员,就安装了这个主题. 各种杀毒,各种百度,Google都没有解决. 纪念一下吧!! 卸载主题

关于uploadifive 文件上传时出现406错误解决办法

最近在做一个项目,里面涉及到文件上传的问题,我们使用的文件上传插件式uploadifive(是收费的),将插件配置完成后进行测试时发现插件的回调函数不能正常执行,经过排查发现执行了ONERRER函数,说明插件报错了.查看控制台发现后台并没有错误信息.说明是前台的问题,经过仔细检查发现前台代码并没有问题,查看状态码发现,浏览器报406错误.经过上网查找,发现有人说是没有加入<mvc:annotation-driven /> 配置的问题.于是试着加入配置,果然好使了.但是真正通过此插件返回数据的时

Linux 文件上传时无法创建新路径,mkdirs也返回false。

web项目,文件上传到linux服务器时无法创建新路径,java.io.File 不会自动创建路径,手动mkdirs也是返回false,检查了所有代码,没发现问题. 经同事提醒,linux中的tomcat服务使用的用户是tomcat,而目标路径portalFiles 的所有者是root,所以无权在目标路径创建子路径. 使用 chown -R tomcat:tomcat portalFiles 递归修改portalFiles 路径下的所有者.