日期:2014-05-16  浏览次数:20331 次

[原创] ExtJs + Struts2文件上传
ExtJs表单代码:
Ext.onReady(function() {
	//定义数据集对象
	var mystore = new Ext.data.Store({
		autoLoad : true,
		sortInfo : {
			field : "uploadtime",
			direction : "DESC"
		},
		reader : new Ext.data.JsonReader({
			totalRecords : "results",
			root : "dataList",
			id : 'id',
			fields : [{
				name : 'id'
			}, {
				name : 'realName'
			}, {
				name : 'contentType'
			}, {
				name : 'size'
			}, {
				name : 'uploadtime',
				sortable : true
			}]
		}),
		proxy : new Ext.data.HttpProxy({
			url : 'file_getAll.action',
			method : 'POST'
		})
	})
	//创建工具栏组件
	var toolbar = new Ext.Toolbar([{
		text : '上传文件',
		iconCls : 'add',
		handler : showAdd
	},
			//			{text : '修改信息',iconCls:'option',handler:showModify},
			{
				text : '删除文件',
				iconCls : 'remove',
				handler : showDelete
			}]);
	//创建Grid表格组件
	var cb = new Ext.grid.CheckboxSelectionModel()
	var myGrid = new Ext.grid.GridPanel({
		applyTo : 'grid-div',
		frame : true,
		tbar : toolbar,
		store : mystore,
		stripeRows : true,
		autoScroll : true,
		viewConfig : {
			autoFill : true
		},
		sm : cb,
		columns : [//配置表格列
		new Ext.grid.RowNumberer({
			header : '行号',
			width : 40
		}),		//表格行号组件
				cb, {
					header : "文件编号",
					width : 40,
					dataIndex : 'id',
					sortable : true
				}, {
					header : "文件名",
					width : 100,
					dataIndex : 'realName',
					sortable : true
				}, {
					header : "文件类型",
					width : 50,
					dataIndex : 'contentType',
					sortable : true
				}, {
					header : "文件大小",
					width : 50,
					dataIndex : 'size',
					sortable : true
				}, {
					header : "发布时间",
					width : 80,
					dataIndex : 'uploadtime',
					sortable : true
				}]
	})
	//创建新增或修改通告信息的form表单
	Ext.state.Manager.setProvider(new Ext.state.CookieProvider()); // 设置缓存
	Ext.QuickTips.init();
	Ext.form.Field.prototype.msgTarget = 'side';//统一指定错误信息提示方式

	var myForm = new Ext.form.FormPanel({
		width : 380,
		height : 200,
		frame : true,
		monitorValid:true,
		fileUpload:true, //需上传文件
		url : 'file_upload.action',//请求的url地址
		method:'POST',
		items : [{
			xtype : 'textfield',
			name : 'realname',
			fieldLabel : '文件备注',
			allowBlank:false,
			emptyText:'请输入文件的文件名或其内容关键字……',
			blankText:'文件备注不能为空!'
		}, {
			xtype:'textfield',
			fieldLabel : '选择文件',
			name : 'attachment',
			//关键
			inputType : 'file',
			allowBlank:false,
			blankText:'请选择文件!',
			emptyText:'请选择上传文件'
		}],
		buttons : [{
			formBind:true,
			text : '上传',
			handler:function(){
				myForm.form.submit({
					clientValidation : true,//进行客户端验证
					waitMsg : '正在上传文件,请稍等……',//提示信息
					waitTitle : '提示',//标题
					success : function(form, action) {//加载成功的处理函数
						win.hide();
						myGrid.getStore().reload();
						Ext.Msg.alert('提示', '上传成功');
					},
					failure : function(form, action) {//加载失败的处理函数
						Ext.Msg.alert('提示', '上传失败');
					}
				});
				}
		}, {
			text : '关闭',
			handler:function(){
				win.hide();
			}
		}]
	});
	//创建弹出窗口
	var win = new Ext.Window({
		layout : 'fit',
		width : 380, //380
		closeAction : 'hide',
		height : 200, //280
		resizable : false,
		shadow : true,
		modal : true,
		closable : true,
		bodyStyle : 'padding:5 5 5 5',
		animCollapse : true,
		items : [myForm]
	});
	//显示上传窗口
	function showAdd() {
		myForm.form.reset();
		myForm.isAdd = true;
		win.setTitle("文件上传");
		win.show();
	}
	//显示删除对话框
	function showDelete() {
		var IdList = geIdList();
		var num = IdList.length;
		if (num == 0) {
			return;
		}
		Ext.MessageBox.confirm("提示", "您确定要删除所选文件吗?", function(btnId) {
			if (btnId == 'yes') {
				Delete(IdList);
			}
		})
	}
	//删除信息
	function Delete(IdList) {
		var fileIds = IdList;
		var msgTip = Ext.MessageBox.show({
			title : '提示',
			width : 250,
			msg : '正在删除文件请稍后......'
		});
		Ext.Ajax.request({
			url : 'file_del.action',
			params : {
				fileIds : fileIds
			},
			method : 'POST',
			success : function(response, options) {
				msgTip.hide();
				var result = Ext.util.JSON.decode(response.