`
clq9761
  • 浏览: 592740 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

Ext多文件上传下载

    博客分类:
  • Ext
阅读更多

以下代码为项目应用中整理,仅供参考。

 

一.多文件上传

 

   1.前台Js代码事例 

items : [
	{
		xtype : 'button',
		text : '添加附件',
		iconCls : 'silk_page_add',
		handler : function() {
			Ext.getCmp("upfile").addFile();
		}
	}, {
		xtype : 'multifileupload',
		width : 750,
		allowBlank : false,
		fileConfig : {
			xtype : 'fileuploadfield',
			emptyText : '选择文件上传',
			fieldLabel : '上传文件',
			anchor : '95%',
			buttonCfg : {
				text : '',
				iconCls : 'silk_folder_find'
			}
		},
		id : 'upfile',
		startId : 'post',
		startName : 'post',
		labelWidth : 70,
		limit : 10,
		allowBlank : false
	}
]

 2.后台代码获取上传附件

MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)request;
Set<MultipartFile> fileset = new LinkedHashSet<MultipartFile>();
for (Iterator it = multipartRequest.getFileNames(); it.hasNext();) {
	String key = (String) it.next();
	MultipartFile file = multipartRequest.getFile(key);
	if (file.getOriginalFilename().length() > 0) {
		fileset.add(file);
	}
}

 注:多附件时可考虑专门建立一个附件表存放附件,在表单提交时需更新附件表,
      同时将多个附件的主键ID以”,”隔开存到主表中。

 

二.多文件展示,下载,删除

 

1.前台Js代码,创建fieldSet

function createDownLoadFieldSet(data,messageId) {
	downLoadFieldSet = new Ext.form.FieldSet({
				title : '附件下载',
				border : true,
				width : '100%',
				layout : 'column',
				autoHeight : true,
				collapsible: true,
				collapsed : true
			});
	// data为附件表的主键ID,多个以;隔开
	var attachUrls = data;
	var attachaUrlArr = attachUrls.split(";");
	attachaUrlArr.pop();
	Ext.each(attachaUrlArr, function(urlid) {
		callBackUrl(urlid,messageId);
	})
}

 2.Js附件展示代码 

 

function callBackUrl(urlid,messageId){
	Ext.Ajax.request({
		url : SMIS.CTX+'/work/post/postListController/getDocumentByUuid.do',
		method : 'POST',
		params : {
			urlId : urlid
		},
		success : function(resp,opt) {
			var doc = Ext.util.JSON.decode(resp.responseText);
			// 附件路径
			var url = doc.attachment
			var pathArr = url.split("/");
			var fileName = pathArr[pathArr.length - 1];
			var temp = downLoadFieldSet.add({
				columnWidth : 1,
				id : url,
				style : {
					padding : '0 0 5 0'
				},
				layout : 'column',
				items : [{
					xtype : 'label',
					width : '45%',
					text : fileName.substring(fileName.
							indexOf("_")+1,fileName.length),
					iconCls : 'silk_application_view_gallery'
				}, {
					xtype : 'label',
					width : '5%'
				}, {
					xtype : 'label',
					width : '25%',
					text : new Date(parseInt(fileName.substring(0,
									fileName.indexOf("_")))).toLocaleString(),
					iconCls : 'silk_application_view_gallery'
				}, {
					xtype : 'button',
					text : '下载附件',
					iconCls : 'silk_application_put',
					handler : function() {
						// Js方法,将URL中的中文进行编码
						url = encodeURI(url); 
						window.open(SMIS.CTX + '/work/post/postListController
									/getAttachment.do?attachmentFile='+ url);
						url = decodeURI(url);
					}
				}, {
					xtype : 'button',
					text : '删除附件',
					iconCls : 'silk_application_put',
					handler : function(){
						removeAttachment(temp,messageId,url);
					}
				}]
			})
		},
		failure : function(){
			Ext.Msg.alert('执行失败',"执行失败!");
		}
	})
}

 

 3.附件移除代码

 

 

function removeAttachment(temp,messageId,url){
	u = encodeURI(url); 
	Ext.Ajax.request({
		url : SMIS.CTX + '/discipline/mechanism/SmisInstitutionController
		/deleteAttachment.do?messageId='+messageId+'&attachmentFile='+u,
		method : 'POST',
		success : function(resp ,action){
			if(Ext.util.JSON.decode(resp.responseText).success){
			Ext.Msg.alert("执行成功",Ext.util.JSON.decode(resp.responseText).msg);
			var newattachments = Ext.getCmp("attachments").getValue()
				.replace(Ext.util.JSON.decode(resp.responseText).documentId,"");
			Ext.getCmp("attachments").setValue(newattachments);
				// 移除附件显示
				downLoadFieldSet.remove(Ext.getCmp(url));
			}else{
			Ext.Msg.alert("执行失败",Ext.util.JSON.decode(resp.responseText).msg);
			}
		},
		failure : function(){
			Ext.Msg.alert("执行失败","执行过程中发生错误!");
		}
	})	
}

 

4.后台代码获取附件进行下载

java.net.URLDecoder.decode(request.getParameter("attachmentFile"),"UTF-8"); 
String attachmentFile = java.net.URLDecoder.decode(
							request.getParameter("attachmentFile"),"UTF-8"); 
response.setContentType("text/html;charset=UTF-8");
try {
	File file = new File(attachmentFile);
	InputStream fis = new BufferedInputStream(new FileInputStream(file));
	byte[] buffer = new byte[fis.available()];
	fis.read(buffer);
	fis.close();
	response.reset();
	response.addHeader("Content-disposition", "attachment;filename=\"" 
			+ new String(file.getName().getBytes("gb2312"), "ISO8859-1"));
	response.addHeader("Content-Length", "" + file.length());
	OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
	toClient.write(buffer);
	toClient.flush();
	toClient.close();
} catch (IOException ex) {
	ex.printStackTrace();
}

 

分享到:
评论
1 楼 yknife 2011-12-19  
一不小心来到强哥的blog,SMIS哈哈。。

相关推荐

    Ext3.0实现多文件上传.rar

    这个功能通常在网页应用中用于让用户能够一次性上传多个文件,如图片、文档等,极大地提高了用户体验。 多文件上传通常涉及以下几个关键技术点: 1. **HTML5 File API**: 这是实现多文件上传的基础。File API允许...

    ext4.0 多文件上传

    标题"ext4.0 多文件上传"指的是在ext4.0文件系统中实现的多文件同时上传功能。ext4.0是Linux操作系统中的一个高级文件系统,它在ext3的基础上进行了优化,提高了性能并支持更大的文件系统容量。多文件上传则是指用户...

    Ext文件上传、下载

    这篇博文“Ext文件上传、下载”将深入探讨如何利用`Ext`库来实现这一功能。由于描述部分为空,我们将主要依赖标题和标签来推测并解释相关知识点。 首先,我们要理解`Ext`的核心概念。`Ext`是基于`Sencha Touch`和`...

    Ext多文件上传

    "Ext多文件上传"通常指的是使用ExtJS库实现的批量或同时上传多个文件的功能。 在实现多文件上传时,我们需要考虑以下几个核心知识点: 1. **表单提交**:在HTML中,表单通常用于收集用户数据并将其发送到服务器。...

    ext多文件上传

    首先,EXTJS中的`Ext.form.Panel`组件是实现多文件上传的基础。我们需要创建一个包含`Ext.form.FileField`的表单,这是EXTJS中用于处理文件输入的组件。在`FileField`中,我们可以通过设置`multiple`属性为`true`来...

    Ext 多文件上传面板扩展

    "Ext 多文件上传面板扩展"是一个用于Web应用的组件,它允许用户同时上传多个文件。这个组件基于ExtJS库,一个广泛使用的JavaScript框架,用于构建富客户端应用程序。ExtJS提供了一个强大的组件模型,使得开发复杂的...

    ext上传组件,可以多文件上传

    EXT上传组件是一款基于Flash技术的前端文件上传工具,它提供了多文件上传的功能,极大地提升了用户在上传文件时的体验和效率。EXT是一个流行的JavaScript库,主要用于构建富客户端应用程序,而EXT上传组件是EXT库的...

    Ext 文件上传参考文档

    Ext 文件上传参考文档主要涉及的是在Web开发中处理文件上传的场景,特别是使用ExtJS框架进行前端交互。ExtJS是一个强大的JavaScript库,用于构建复杂的、数据驱动的Web应用程序。文件上传是用户界面中的常见功能,...

    EXT文件批量上传源代码

    EXT文件批量上传源代码是一种基于EXT JavaScript库实现的前端文件上传解决方案。EXT是一个强大的富客户端JavaScript框架,它提供了丰富的组件库,用于构建交互性强、功能丰富的Web应用。EXT的文件批量上传功能允许...

    ext上传文件

    标题中的“ext上传文件”可能指的是使用EXTJS(一个JavaScript库)进行文件上传的功能。EXTJS提供了一套完整的用户界面组件,其中包括文件上传组件,它允许用户在Web应用中方便地上传文件。EXTJS通常与后端服务器...

    ext文件上传下载

    标签“extjs 文件上传下载”表明这是EXTJS开发中的常见场景,开发者可能需要了解如何与服务器进行通信,处理文件流,以及如何在前端展示上传和下载的状态。 在提供的压缩包文件名"2008720"中,由于没有具体的文件...

    Ext2.0 文件上传组件

    "Ext2.0 文件上传组件"是一个用于Web应用程序的组件,它允许用户在浏览器中方便地上传文件。这个组件基于Ext JavaScript库的2.0版本,Ext是一个强大的前端开发框架,提供了丰富的用户界面组件和数据管理功能。在本文...

    Ext上传文件例子(入门)

    在实际应用中,我们还需要考虑一些额外的细节,如文件大小限制、文件类型检查、多文件上传等。这些可以通过配置`Ext.form.FileField`的属性或扩展上传组件来实现。例如,`allowBlank`属性控制是否允许选择空文件,`...

    Ext 实现 文件上传 进度显示

    `Ext`是一个流行的JavaScript框架,用于构建富客户端应用程序,而实现文件上传进度显示则为用户提供更好的用户体验。本篇文章将详细探讨如何利用`Ext`来实现文件上传的进度显示,并结合`commons-fileupload`库进行...

    Ext+Struts2多文件上传

    这是一个常见的需求,在Web应用中,用户可能需要上传多个文件,如图片、文档等。通过理解这一过程,开发者可以构建更强大、用户友好的交互式应用程序。 首先,ExtJS是一个流行的JavaScript库,用于构建桌面级的Web...

    EXT 3.0 文件上传对话框

    EXT 3.0 文件上传对话框是EXTJS框架中一种专为EXT3设计的高级功能,用于提升用户体验,特别是处理文件上传操作时。EXT3是一个非常流行的JavaScript库,它提供了丰富的用户界面组件,用于构建富客户端应用。EXT3.0...

    Ext上传文件控件

    在给定的"Ext上传文件控件"中,我们关注的是ExtJS如何处理文件上传的功能。ExtJS 提供了一个名为`Ext.form.FileField`(也称为`Ext.form.field.File`)的组件,允许用户在Web表单中选择和上传文件。这个控件通常与`...

    Java 版Ext多文件上传

    在Java开发中,实现多文件上传功能通常会结合前端技术和后端处理来完成。这里我们主要关注的是使用ExtJS库(一个基于JavaScript的用户界面框架)作为前端组件,与Java后端进行交互来实现文件上传。`SwfUpload`是一个...

    Ext上传文件 Demo

    本示例“Ext上传文件 Demo”聚焦于如何使用Ext JavaScript库与ASP.NET后端相结合来实现文件上传。下面将详细阐述相关知识点。 首先,Ext是一个强大的JavaScript框架,用于构建富客户端应用程序。它提供了丰富的组件...

    Ext 文件上传demo

    EXT文件上传Demo是一个基于EXT库实现的交互式文件上传示例。EXT是一个强大的JavaScript库,专为构建富互联网应用程序(RIA)而设计。它提供了丰富的组件库,包括表格、面板、菜单、表单等,以及复杂的布局管理和数据...

Global site tag (gtag.js) - Google Analytics