Struts2下实现批量下载/打包ZIP下载文件

Struts2下实现批量下载/打包ZIP下载文件


实现思路:
    由于是基于Struts2实现的打包下载文件,我们先写一个TestAction类
    public class TestAction extends BaseActionSupport {
   
        //定义一个InputStream流
        private  InputStream  inputStreamAll;
        private String inputPathforAll ;
        private String fileNameforAll ;
        //提供他的get和set方法
        public InputStream getInputStreamAll() throws Exception {
            return inputStreamAll;
        }
        public void setInputStreamAll(InputStream inputStreamAll) throws Exception {
            this.inputStreamAll = inputStreamAll;
        }
        //编写具体的下载方法提供给前端调用
    /**
     * 文件打包下载
     * @return
     */
    public String downloadFileAll() {
        //查询出后台的文件列表
        JdbcTemplate jdbcTemplateExtend = SpringContextUtil.getBean("jdbcTemplate");
        CommonManager commonManager = SpringContextUtil.getBean("commonManager");
        List<Map> queryForList = jdbcTemplate.queryForList("select * from  FILE where id='" + id + "'");
        //获取上传到服务器的文件夹/uploadfile
        String prefix = ServletActionContext.getServletContext().getRealPath("/uploadfile");
        //new一个ArrayList用来存放具体的文件
        ArrayList<String> zipFile = new ArrayList<String>();
        //遍历出集合中的文件
        for (Map map : queryForList) {
            String fileName = (String) map.get("FILE_NAME");
            //把文件存储到我们之前定义的ArrayList集合中
            zipFile.add(prefix+File.separator+fileName );
        }
        //使用一个临时目录uploadZip用来存放打包好的ZIP文件
        String zipPath = ServletActionContext.getServletContext().getRealPath("/uploadZip/");
        //为打包的zip文件创建一个名称,以时间戳区分
        String formatDate =new  SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
        //添加文件名的后缀
        String fileName = formatDate + ".zip";
        //定义文件的输出路径
        String path = zipPath +File.separator +fileName;
        //使用ZIP工具类来压缩zipFile集合中添加的列表文件
        ZipUtilToFile.compressFile(zipFile, path);
        //保存到临时目录
        inputPathforAll = zipPath+ "\\uploadZip\\" + fileName;
        try {
            //文件名称
            fileNameforAll =  new String(fileName.getBytes(), "ISO8859-1");
            this.setInputStreamAll(
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值