`
ninggy
  • 浏览: 114246 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

struts2结合ext3批量下载文件

阅读更多

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>

 

0
0
分享到:
评论
2 楼 lee20101029 2011-03-14  
多谢分享
1 楼 lee20101029 2011-02-25  
有完整的源代码共享一下不??

相关推荐

    Struts2+Ext登录整合完整版

    Struts2+Ext登录整合完整版 Struts2+Ext登录整合完整版 Struts2+Ext登录整合完整版 Struts2+Ext登录整合完整版 Struts2+Ext登录整合完整版 Struts2+Ext登录整合完整版 Struts2+Ext登录整合完整版 Struts2+Ext登录...

    struts2批量下载

    在Struts2框架中,批量文件下载是一种常见的...综上所述,Struts2的批量文件下载涉及前端页面设计、Struts2配置、后台下载逻辑以及错误处理等多个方面。通过合理的设计和实现,可以提供高效、安全的批量文件下载功能。

    struts2与Ext4.0的json交互

    关于压缩包文件“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+ext实例

    struts与ext集成

    这通常包括struts2-core、struts2-ext-plugin以及EXT库的相关JAR文件。 2. **添加Struts2和EXT的配置** 在struts.xml配置文件中,你需要定义EXT插件,并指定EXT库的路径。例如: ```xml &lt;constant name="struts....

    struts2中的批量上传与文件下载(解决中文乱码问题)

    本文将详细介绍如何在Struts2框架下实现批量上传与文件下载,并解决中文乱码问题。 一、Struts2文件上传 1. 配置Struts2文件上传支持: 在struts.xml配置文件中,我们需要添加`&lt;constant&gt;`元素来设置允许上传的...

    struts2 实现文件批量上传

    3. **Action类处理**:在Struts2的Action类中,我们需要定义一个`List&lt;File&gt;`或`List&lt;Part&gt;`类型的字段,与前端的文件输入框名称对应。Struts2会自动将上传的文件绑定到这些字段。 4. **文件验证**:在处理文件上传...

    ext struts2 swfupload 跨域文件上传

    总结起来,"ext struts2 swfupload 跨域文件上传"是关于如何使用EXTJS构建前端界面,结合Struts2处理服务器端逻辑,利用SwfUpload的跨域能力实现文件上传的一种解决方案。这个过程中涉及的技术包括JavaScript编程、...

    struts2批量下载jar

    struts2批量下载jar

    Struts2文件批量上传

    Struts2文件批量上传是Java Web开发中常见的一种功能,主要应用于网站后台处理大量用户上传的文件,如图片、文档等。Struts2是一个强大的MVC框架,它提供了丰富的功能来支持文件上传操作,包括单个文件上传和批量...

    struts2实现文件下载功能

    在这个“Struts2实现文件下载功能”的示例中,我们将深入探讨如何利用Struts2框架来实现在web应用中让用户下载文件的功能。 首先,我们需要理解文件下载的基本原理。在Web应用中,当用户点击一个链接或提交一个表单...

    struts2 annotation 批量下载

    知识点:Struts2框架下的注解批量下载实现与临时文件管理 在Struts2框架中,使用注解(Annotation)可以极大地简化控制器类的配置,提高代码的可读性和维护性。本文将深入探讨如何利用Struts2的注解功能实现批量...

    struts2+ajax实现批量上传文件(简单实现,自己加工)

    Struts2和Ajax技术结合可以实现用户界面与服务器之间的异步通信,从而提供更好的用户体验,尤其是在处理批量文件上传这样的任务时。在这个项目中,我们利用Struts2的Action和Ajax的异步特性来创建一个简单的批量文件...

    struts2+ext例子

    这个"struts2+ext例子"可能是一个示例项目,展示了如何将Struts2后端与ExtJS前端相结合,以实现一个完整的Web应用。在Struts2中,Action是处理请求的核心,它接收来自用户的HTTP请求,执行业务逻辑,并返回相应的...

    Struts2 单个、批量文件上传 精简源码

    Struts2提供了强大的文件上传支持,包括单个文件上传和批量文件上传。在这个精简源码案例中,我们将探讨这两种模式的实现方式。 首先,我们来了解一下Struts2单个文件上传的基本概念。在Struts2中,文件上传主要...

    一个Struts2+Ext实现增删改查的实例

    3. **控制器(Controller)**:Struts2的Action类作为控制器,处理来自ExtJS的AJAX请求。这些请求可能包括获取学生列表、添加新学生、更新学生信息和删除学生等操作。 4. **数据库操作**:使用SQL Server 2000存储...

    struts2文件上传下载源代码

    在Struts2中,文件上传和下载是常见的功能需求,特别是在处理用户交互和数据交换时。这篇博客文章提供的"struts2文件上传下载源代码"旨在帮助开发者理解和实现这些功能。 文件上传功能允许用户从他们的设备上传文件...

    Struts2+spring2.5+EXT+json实例

    Struts2、Spring2.5、EXT和JSON是四个在Web开发中至关重要的技术,它们共同构建了高效、灵活和可扩展的Web应用程序。这里,我们深入探讨这四个技术及其在实际项目中的应用。 首先,Struts2是一个基于MVC(Model-...

Global site tag (gtag.js) - Google Analytics