以下代码为项目应用中整理,仅供参考。
一.多文件上传
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. **HTML5 File API**: 这是实现多文件上传的基础。File API允许...
标题"ext4.0 多文件上传"指的是在ext4.0文件系统中实现的多文件同时上传功能。ext4.0是Linux操作系统中的一个高级文件系统,它在ext3的基础上进行了优化,提高了性能并支持更大的文件系统容量。多文件上传则是指用户...
这篇博文“Ext文件上传、下载”将深入探讨如何利用`Ext`库来实现这一功能。由于描述部分为空,我们将主要依赖标题和标签来推测并解释相关知识点。 首先,我们要理解`Ext`的核心概念。`Ext`是基于`Sencha Touch`和`...
"Ext多文件上传"通常指的是使用ExtJS库实现的批量或同时上传多个文件的功能。 在实现多文件上传时,我们需要考虑以下几个核心知识点: 1. **表单提交**:在HTML中,表单通常用于收集用户数据并将其发送到服务器。...
首先,EXTJS中的`Ext.form.Panel`组件是实现多文件上传的基础。我们需要创建一个包含`Ext.form.FileField`的表单,这是EXTJS中用于处理文件输入的组件。在`FileField`中,我们可以通过设置`multiple`属性为`true`来...
"Ext 多文件上传面板扩展"是一个用于Web应用的组件,它允许用户同时上传多个文件。这个组件基于ExtJS库,一个广泛使用的JavaScript框架,用于构建富客户端应用程序。ExtJS提供了一个强大的组件模型,使得开发复杂的...
EXT上传组件是一款基于Flash技术的前端文件上传工具,它提供了多文件上传的功能,极大地提升了用户在上传文件时的体验和效率。EXT是一个流行的JavaScript库,主要用于构建富客户端应用程序,而EXT上传组件是EXT库的...
Ext 文件上传参考文档主要涉及的是在Web开发中处理文件上传的场景,特别是使用ExtJS框架进行前端交互。ExtJS是一个强大的JavaScript库,用于构建复杂的、数据驱动的Web应用程序。文件上传是用户界面中的常见功能,...
EXT文件批量上传源代码是一种基于EXT JavaScript库实现的前端文件上传解决方案。EXT是一个强大的富客户端JavaScript框架,它提供了丰富的组件库,用于构建交互性强、功能丰富的Web应用。EXT的文件批量上传功能允许...
标题中的“ext上传文件”可能指的是使用EXTJS(一个JavaScript库)进行文件上传的功能。EXTJS提供了一套完整的用户界面组件,其中包括文件上传组件,它允许用户在Web应用中方便地上传文件。EXTJS通常与后端服务器...
标签“extjs 文件上传下载”表明这是EXTJS开发中的常见场景,开发者可能需要了解如何与服务器进行通信,处理文件流,以及如何在前端展示上传和下载的状态。 在提供的压缩包文件名"2008720"中,由于没有具体的文件...
"Ext2.0 文件上传组件"是一个用于Web应用程序的组件,它允许用户在浏览器中方便地上传文件。这个组件基于Ext JavaScript库的2.0版本,Ext是一个强大的前端开发框架,提供了丰富的用户界面组件和数据管理功能。在本文...
在实际应用中,我们还需要考虑一些额外的细节,如文件大小限制、文件类型检查、多文件上传等。这些可以通过配置`Ext.form.FileField`的属性或扩展上传组件来实现。例如,`allowBlank`属性控制是否允许选择空文件,`...
`Ext`是一个流行的JavaScript框架,用于构建富客户端应用程序,而实现文件上传进度显示则为用户提供更好的用户体验。本篇文章将详细探讨如何利用`Ext`来实现文件上传的进度显示,并结合`commons-fileupload`库进行...
这是一个常见的需求,在Web应用中,用户可能需要上传多个文件,如图片、文档等。通过理解这一过程,开发者可以构建更强大、用户友好的交互式应用程序。 首先,ExtJS是一个流行的JavaScript库,用于构建桌面级的Web...
EXT 3.0 文件上传对话框是EXTJS框架中一种专为EXT3设计的高级功能,用于提升用户体验,特别是处理文件上传操作时。EXT3是一个非常流行的JavaScript库,它提供了丰富的用户界面组件,用于构建富客户端应用。EXT3.0...
在给定的"Ext上传文件控件"中,我们关注的是ExtJS如何处理文件上传的功能。ExtJS 提供了一个名为`Ext.form.FileField`(也称为`Ext.form.field.File`)的组件,允许用户在Web表单中选择和上传文件。这个控件通常与`...
在Java开发中,实现多文件上传功能通常会结合前端技术和后端处理来完成。这里我们主要关注的是使用ExtJS库(一个基于JavaScript的用户界面框架)作为前端组件,与Java后端进行交互来实现文件上传。`SwfUpload`是一个...
本示例“Ext上传文件 Demo”聚焦于如何使用Ext JavaScript库与ASP.NET后端相结合来实现文件上传。下面将详细阐述相关知识点。 首先,Ext是一个强大的JavaScript框架,用于构建富客户端应用程序。它提供了丰富的组件...
EXT文件上传Demo是一个基于EXT库实现的交互式文件上传示例。EXT是一个强大的JavaScript库,专为构建富互联网应用程序(RIA)而设计。它提供了丰富的组件库,包括表格、面板、菜单、表单等,以及复杂的布局管理和数据...