`
Merrygrass
  • 浏览: 166562 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

[原创] 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.responseText);
				if (result.success) {
					//服务器端数据成功删除后,同步删除客户端列表中的数据
					for (var i = 0; i < IdList.length; i++) {
						var index = mystore.find('id', IdList[i]);
						if (index != -1) {
							var rec = mystore.getAt(index)
							mystore.remove(rec);
						}
					}
					Ext.Msg.alert('提示', '删除文件成功。');
				} else {
					Ext.Msg.alert('提示', '删除文件失败!');
				}
			},
			failure : function(response, options) {
				msgTip.hide();
				Ext.Msg.alert('提示', '删除文件请求失败!');
			}
		});
	}
	//数据修改后,同步更新信息列表信息
	function updateList(InfoId) {
		var fields = getFormFieldsObj(InfoId);
		var index = mystore.find('id', fields.id);
		if (index != -1) {
			var item = mystore.getAt(index);
			for (var fieldName in fields) {
				item.set(fieldName, fields[fieldName]);
			}
			mystore.commitChanges();
		}
	}

	//取得表单数据
	function getFormFieldsObj(InfoId) {
		var fields = myForm.items;
		var obj = {};
		for (var i = 0; i < fields.length; i++) {
			var item = fields.itemAt(i);
			var value = item.getValue();
			obj[item.name] = value;
		}
		if (Ext.isEmpty(obj['id'])) {
			obj['id'] = InfoId;
		}
		return obj;
	}

	//取得所选信息
	function geIdList() {
		var recs = myGrid.getSelectionModel().getSelections();
		var list = [];
		if (recs.length == 0) {
			Ext.MessageBox.alert('提示', '请选择要进行操作的文件!');
		} else {
			for (var i = 0; i < recs.length; i++) {
				var rec = recs[i];
				list.push(rec.get('id'));
			}
		}
		return list;
	}
});

Acion代码:
package com.jyxx.action;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.json.annotations.JSON;

import com.jyxx.model.Ufile;
import com.jyxx.serviceimpl.fileServiceImpl;
import com.jyxx.utils.GetDate;
import com.jyxx.utils.UploadUtil;
import com.opensymphony.xwork2.ActionSupport;

public class FileAction extends ActionSupport {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private	File attachment;
	private String fileName;
	private String contentType;
	private String size;
	private String realname;
	private String[] fileIds;
	private boolean flag = false;
	private int results;
	private List<Ufile> dataList = new ArrayList<Ufile>();
	private fileServiceImpl impl = new fileServiceImpl();
	
	
	public String getAll(){
		dataList = impl.getAllFiles();
		results = dataList.size();
		return SUCCESS;
	}
	
	@SuppressWarnings("deprecation")
	public String upload() throws Exception {
		String realPath = ServletActionContext.getRequest().getRealPath(
				"/upload");
		Ufile afile = new Ufile();
		String tname = UploadUtil.generateFileName(this.fileName);
		String tdir = realPath + "\\" + tname;
		long s = this.attachment.length();
		if((1024 * 1024 * 1024) <= s){
			size = s /(1024 * 1024 * 1024) + "GB";
		}else if((1024 * 1024) <= s){
			size = s /(1024 * 1024) + "MB";
		}else if(1024 <= s){
			size = s /1024 + "KB";
		}else{
			size = s + "B";
		}
		File targetfile = new File(realPath, tname);
		FileUtils.copyFile(attachment, targetfile);
		afile.setFileName(tdir);
		afile.setContentType(this.contentType);
		afile.setRealName(realname);
		afile.setSize(size);
		GetDate date = new GetDate();
		afile.setUploadtime(date.getDate());
		this.flag = impl.add(afile);
		return NONE;
	}
	
	public String del(){
		for(int i=0;i<fileIds.length;i++){
			int id = Integer.parseInt(fileIds[i]);
			File tem_file = new File(impl.getOne(id).getFileName());
			tem_file.delete();
			flag = impl.del(id);
		}
		return SUCCESS;
	}

	public String getSize() {
		return size;
	}

	public void setSize(String size) {
		this.size = size;
	}

	public String getRealname() {
		return realname;
	}

	public void setRealname(String realname) {
		this.realname = realname;
	}

	public String[] getFileIds() {
		return fileIds;
	}

	public void setFileIds(String[] fileIds) {
		this.fileIds = fileIds;
	}
	
	@JSON(name="success")
	public boolean isFlag() {
		return flag;
	}
	
	public void setFlag(boolean flag) {
		this.flag = flag;
	}

	public int getResults() {
		return results;
	}

	public void setResults(int results) {
		this.results = results;
	}
	
	public String getFileName() {
		return fileName;
	}

	public void setFileName(String fileName) {
		this.fileName = fileName;
	}

	public String getContentType() {
		return contentType;
	}

	public void setContentType(String contentType) {
		this.contentType = contentType;
	}

	public void setAttachment(File attachment) {
		this.attachment = attachment;
	}

	public void setAttachmentFileName(String attachmentFileName) {
		this.setFileName(attachmentFileName);
	}

	public void setAttachmentContentType(String attachmentContentType) {
		this.setContentType(attachmentContentType);
	}

	public List<Ufile> getDataList() {
		return dataList;
	}

	public void setDataList(List<Ufile> dataList) {
		this.dataList = dataList;
	}

	

}


1
0
分享到:
评论
3 楼 guanji1989 2012-09-20  
思路清晰,谢谢!
2 楼 wozhx123 2012-07-31  
报错!  this.el.dom为空或不是对象
1 楼 micropang 2010-01-04  
能不能把XML配置文件也贴上来???~~

相关推荐

    Extjs+Struts2实现异步文件上传

    网上有些这样的例子,但是下了几个都没有跑起来,哎,希望那些发文章的人要发就发全的,别发个半生不熟的。... 现在自己整理了一个Struts2+ExtJS2实现文异步文件上传,没法上传图片无法看到效果,直接上源码吧。

    能运行的ExtJs+Struts2文件上传

    标题"能运行的ExtJs+Struts2文件上传"表明这是一个实现了文件上传功能的示例项目。在ExtJs中,可以利用其提供的FileInput组件创建一个文件选择器,用户可以选择文件并提交到服务器。Struts2则在服务器端处理文件上传...

    ExtJS+Struts2

    在"ExtJS+Struts2"的组合中,前端使用ExtJS进行界面设计和用户交互处理。例如,"简单增删改"功能通常会涉及到ExtJS的Grid Panel组件,它能展示数据表格,支持行操作,如添加新记录、删除现有记录以及编辑单元格内容...

    Extjs+struts实现文件上传

    Extjs+struts实现文件上传 使用说明中的UploadfileAction.java中的代码要拷贝到一个JSP文件中并将url: '/rsgl/uploadfile.do',改为url: '/rsgl/jspcos.jsp',才可以正常上传

    ExtJs + Struts2 + JSON 程序总结

    ExtJs + Struts2 + JSON 是一种常见的前端与后端数据交互的技术组合,常用于构建富客户端应用。这里我们详细探讨一下这三个技术组件以及它们如何协同工作。 首先,ExtJs 是一个JavaScript库,用于创建复杂的、用户...

    extjs+struts案例

    extjs+struts案例 extjs+struts案例

    extjs+struts2+hibernate+json登录程序

    ExtJS + Struts2 + Hibernate + JSON 登录程序是一个典型的Web开发示例,结合了前端JavaScript框架、MVC框架、持久层框架以及数据传输格式,实现了用户登录功能的前后端交互。下面将详细阐述这些技术及其在登录程序...

    漂亮的Extjs+struts2实现联动下拉

    ExtJS和Struts2是两种在Web开发中广泛使用的开源技术。ExtJS是一个JavaScript库,提供了丰富的用户界面组件,如数据网格、图表、表单等,用于构建富客户端应用程序。Struts2则是一个基于MVC设计模式的Java Web框架,...

    java版ExtJs+struts2做的OA

    java版ExtJs+struts2做的OA对于java开发者和学习者来说是很不错的学习资料

    @@@extjs+struts2+json plugin的例子

    在IT行业中,构建Web应用程序是一项常见的任务,而`ExtJS`、`Struts2`和`JSON`是其中的关键技术,常被用来创建交互性强、功能丰富的用户界面和高效的服务器通信。下面将详细阐述这三个技术及其结合使用的情况。 ...

    Extjs+Struts整合入门实例

    通常,ExtJS的库文件会被放置在项目的静态资源目录下,如`/WEB-INF/resources/js/`,而Struts的配置文件如struts.xml则位于`/WEB-INF/`目录中。 在Struts中,我们定义Action类来处理用户的请求。例如,可以创建一个...

    struts2+extjs3 单/多文件上传

    本文将深入探讨如何使用Struts2和ExtJS3实现单文件和多文件的上传功能。 首先,我们要理解文件上传的基本流程。在Web应用中,用户通过浏览器选择本地文件,然后这些文件的数据被封装到HTTP请求中发送到服务器。...

    extjs+struts2+mysql

    在本项目中,"extjs+struts2+mysql" 的组合被用来构建一个基础的Web应用程序,主要功能包括增、删、改、查。这是一个常见的技术栈,用于开发交互性强、用户界面友好的企业级应用。下面我们将详细讨论这三个关键技术...

    extjs+struts2结合实现

    2. **Action配置**:在Struts2中,需要为ExtJS的请求定义对应的Action,例如设置Action的方法返回类型为`json`,并在配置文件中配置相应的结果类型。 3. **JSON响应**:Struts2的Action可以通过`@ResponseBody`注解...

    ExtJs+struts2+hibernate+spring的图书管理系统

    ExtJs+struts2+hibernate+spring的图书管理系统,可作为毕业设计使用,供大家一起参考学习为。

    图书管理系统源码(ExtJs+struts2+hibernate+spring)

    【图书管理系统源码(ExtJs+struts2+hibernate+spring)】是一个基于Web的软件项目,它展示了如何整合多种技术来构建一个实际的应用系统。这个管理系统使用了前端框架ExtJs,后端MVC框架Struts2,持久层框架...

    extjs+struts2省市区三级联动完整示例

    在本文中,我们将深入探讨如何使用ExtJS 4和Struts2框架实现省市区三级联动的完整示例。这个示例适用于需要在Web应用程序中实现地理区域选择功能的情况,例如用户地址输入。以下是对该技术栈及其实现方法的详细说明...

    Extjs+Struts2+JDBC

    ExtJS、Struts2和JDBC是Web开发中常见的技术栈,它们的结合可以构建功能丰富的交互式Web应用。这个小例子提供了一个基于这些技术的简单增删改查(CRUD)操作的实现,对于初学者来说是一个很好的学习资源。 ExtJS是...

    extjs+struts+hibernate做的文件批量上传源代码

    在文件上传中,Struts接收前端ExtJS发送的文件数据,处理上传请求,调用服务层方法,将文件保存到服务器的指定位置,并将上传结果返回给前端。 3. Hibernate:这是Java领域的一个ORM(对象关系映射)框架,它简化了...

    EXTJS4+STRUTS2+JAVA增删改查

    EXTJS4、STRUTS2和JAVA是Web开发中常用的三大技术框架,它们结合使用可以构建功能丰富的交互式用户界面和高效的企业级应用。在这个"EXTJS4+STRUTS2+JAVA增删改查"的例子中,我们将深入探讨这三个技术如何协同工作,...

Global site tag (gtag.js) - Google Analytics