J2EE方面实现多文件上传比较容易,但是现实多文件的下载,有点麻烦,方法网上讲有几种,我采用的是打包下载,但是在我的项目中,想把查询出来的Ext.grid 数据列表作为excel文件导出,跟每条数据相关的表单文件也一起导出来,为了导出后在查看excel文件时候能够点击文件编号就能打开word文件所以又得处理excel文件。
1.首先是ext下载grid列表到excel文件中。网上能找到很多,如:http://extjs.org.cn/node/324
但是那都只是导出当前页的grid数据,我想导出的是所有的不分页的数据。
if (Ext.isIE6 || Ext.isIE7 || Ext.isIE8 || Ext.isSafari|| Ext.isSafari2 || Ext.isSafari3) {//||Ext.isChrome||Ext.isGecko 支持chrome 和firefox
if (!Ext.fly('frmDummy')) {
var frm = document.createElement('form');
frm.id = 'frmDummy';
frm.name = id;
frm.className = 'x-hidden';
document.body.appendChild(frm);
}
Ext.Ajax.request({
url : this.url, //查询的url
method : 'POST',
form : Ext.fly('frmDummy'),
callback : function(o, s, r) {},
isUpload : true,//这个很重要
params : this.getStore().baseParams //查询的参数
})
} else {
Ext.Msg.alert('操作提示', '不支持该浏览器,请选择IE!');
}
后台接受请求后处理查询出来的list集合。我采用的是poi生成excel文件。生成excel的代码见附件中ExcelUtils.java,
java打zip包,javaAPI中有个包叫java.util.zip用来处理zip打包文件的。但是打包时文件名为中文就会乱码,所以我用truezip.jar。这样就解决了文件名乱码的问题。打包代码见附件ZipUtils.java。
下面是后台处理1:
TYwfl tyw = tywflDAO.findById(mbd.getIntYwid());
if (mbd.getStrChaXun() == null || mbd.getStrChaXun().trim().length() < 0) {
mbd.setStrChaXun("");
}
List<TBd> list_bd = tbdDAO.findByJPQL("select model from TBd model where model.bdZt=12 and( model.tywflBybdYwflid.classId = ? or model.tywflBybdYwflid.parentPath like '" + tyw.getParentPath()
+ "," + mbd.getIntYwid() + ",%' or tywflBybdYwflid.parentId=? ) and model.bdMc like '%" + mbd.getStrChaXun() + "%' order by model.bdId", mbd.getIntYwid(), mbd.getIntYwid());
String basepath = ServletActionContext.getServletContext().getRealPath("soa/");// soa的服务器绝对地址
SimpleDateFormat bartDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
String time = bartDateFormat.format(new Date());
String excelname = basepath + "/tmp/" + tyw.getClassName() + time + ".xls";// excel文件的绝对地址
String zipname = basepath + "/tmp/" + tyw.getClassName() + time + ".zip";// zip文件的绝对地址
String zipcontextpath = "soa/tmp/" + tyw.getClassName() + time + ".zip";// zip文件在服务器上的url下载地址
ExcelUtils excel = new ExcelUtils(excelname);
excel.exportXLS(list_bd);
ZipUtils.outPutZip(basepath, list_bd, zipname, excelname);
setStrFileName(tyw.getClassName() + time + ".zip");
setInputPath(zipcontextpath);
return XIAZAI;
处理2:InPutSream的生成
public InputStream getInputStream() {
return ServletActionContext.getServletContext().getResourceAsStream(inputPath);//inputPath是相对服务器的地址,不是本地地址
}
处理3:下载文件名乱码问题
public String getStrFileName() {
try {
strFileName = new String(strFileName.getBytes("gb2312"), "ISO8859-1");
} catch (UnsupportedEncodingException e) {
// e.printStackTrace();
return "unkown";
}
return strFileName;
}
处理4:配置文件
<result name="xiazai" type="stream">
<param name="contentType">application/octet-stream;charset=ISO8859-1</param>
<param name="inputName">inputStream</param>
<param name="contentDisposition">attachment;filename="${strFileName}"</param>
<param name="bufferSize">4096</param>
</result>
分享到:
相关推荐
Struts2+Ext登录整合完整版 Struts2+Ext登录整合完整版 Struts2+Ext登录整合完整版 Struts2+Ext登录整合完整版 Struts2+Ext登录整合完整版 Struts2+Ext登录整合完整版 Struts2+Ext登录整合完整版 Struts2+Ext登录...
在Struts2框架中,批量文件下载是一种常见的...综上所述,Struts2的批量文件下载涉及前端页面设计、Struts2配置、后台下载逻辑以及错误处理等多个方面。通过合理的设计和实现,可以提供高效、安全的批量文件下载功能。
关于压缩包文件“teststruts3”,虽然名字中包含“struts3”,但这里讨论的是Struts2与Ext4.0的交互。文件名可能是误写,或者包含了Struts2的一些测试代码或配置文件。如果要深入学习,你可以检查这个文件,看看里面...
struts2+ext实例struts2+ext实例struts2+ext实例struts2+ext实例struts2+ext实例struts2+ext实例struts2+ext实例struts2+ext实例struts2+ext实例
这通常包括struts2-core、struts2-ext-plugin以及EXT库的相关JAR文件。 2. **添加Struts2和EXT的配置** 在struts.xml配置文件中,你需要定义EXT插件,并指定EXT库的路径。例如: ```xml <constant name="struts....
本文将详细介绍如何在Struts2框架下实现批量上传与文件下载,并解决中文乱码问题。 一、Struts2文件上传 1. 配置Struts2文件上传支持: 在struts.xml配置文件中,我们需要添加`<constant>`元素来设置允许上传的...
3. **Action类处理**:在Struts2的Action类中,我们需要定义一个`List<File>`或`List<Part>`类型的字段,与前端的文件输入框名称对应。Struts2会自动将上传的文件绑定到这些字段。 4. **文件验证**:在处理文件上传...
总结起来,"ext struts2 swfupload 跨域文件上传"是关于如何使用EXTJS构建前端界面,结合Struts2处理服务器端逻辑,利用SwfUpload的跨域能力实现文件上传的一种解决方案。这个过程中涉及的技术包括JavaScript编程、...
struts2批量下载jar
Struts2文件批量上传是Java Web开发中常见的一种功能,主要应用于网站后台处理大量用户上传的文件,如图片、文档等。Struts2是一个强大的MVC框架,它提供了丰富的功能来支持文件上传操作,包括单个文件上传和批量...
在这个“Struts2实现文件下载功能”的示例中,我们将深入探讨如何利用Struts2框架来实现在web应用中让用户下载文件的功能。 首先,我们需要理解文件下载的基本原理。在Web应用中,当用户点击一个链接或提交一个表单...
知识点:Struts2框架下的注解批量下载实现与临时文件管理 在Struts2框架中,使用注解(Annotation)可以极大地简化控制器类的配置,提高代码的可读性和维护性。本文将深入探讨如何利用Struts2的注解功能实现批量...
Struts2和Ajax技术结合可以实现用户界面与服务器之间的异步通信,从而提供更好的用户体验,尤其是在处理批量文件上传这样的任务时。在这个项目中,我们利用Struts2的Action和Ajax的异步特性来创建一个简单的批量文件...
这个"struts2+ext例子"可能是一个示例项目,展示了如何将Struts2后端与ExtJS前端相结合,以实现一个完整的Web应用。在Struts2中,Action是处理请求的核心,它接收来自用户的HTTP请求,执行业务逻辑,并返回相应的...
Struts2提供了强大的文件上传支持,包括单个文件上传和批量文件上传。在这个精简源码案例中,我们将探讨这两种模式的实现方式。 首先,我们来了解一下Struts2单个文件上传的基本概念。在Struts2中,文件上传主要...
3. **控制器(Controller)**:Struts2的Action类作为控制器,处理来自ExtJS的AJAX请求。这些请求可能包括获取学生列表、添加新学生、更新学生信息和删除学生等操作。 4. **数据库操作**:使用SQL Server 2000存储...
在Struts2中,文件上传和下载是常见的功能需求,特别是在处理用户交互和数据交换时。这篇博客文章提供的"struts2文件上传下载源代码"旨在帮助开发者理解和实现这些功能。 文件上传功能允许用户从他们的设备上传文件...
Struts2、Spring2.5、EXT和JSON是四个在Web开发中至关重要的技术,它们共同构建了高效、灵活和可扩展的Web应用程序。这里,我们深入探讨这四个技术及其在实际项目中的应用。 首先,Struts2是一个基于MVC(Model-...