ZipOutputStream导出压缩文件

来源:互联网 发布:js动态修改style属性 编辑:程序博客网 时间:2024/06/04 17:42
1.在BidMultiOperateAction中添加一个新的actionType=‘BatchExportProvinceGrade’,调用方法如下,
   /**
     * 多选标的批量导出分省公司评分模板ZIP
     *
     * @param request
     * @param response
     * @param form
     */
    private void batchExportProvinceGrade(HttpServletRequest request, HttpServletResponse response, BidForm form)
        throws Exception
 
该方法类似现有的exportProvinceGrade,方法体如下:
 
        IBidBizService objBidBizService = DynamicDelegate.getService(IBidBizService.class);
        IBidIssueBizService objBidIssueBizService = DynamicDelegate.getService(IBidIssueBizService.class);
        ZipOutputStream objZipOutputStream = null;
        // 获取io流
        objZipOutputStream = new ZipOutputStream(getDownloadOutputStream(response, "123.zip"));
 
        String[] arrBidIds = form.getIdList();
        BidVO objBidVO = null;
        for (String strBidId : arrBidIds) {
 
            List<QueryCondition> lstQC = new ArrayList<QueryCondition>(1);
            lstQC.add(new QueryCondition("AND", "", "bidId", "=", strBidId, ""));
            List<BidVO> lstBidVO = objBidBizService.queryBidInfoList(lstQC, 1, Integer.MAX_VALUE);
            if (lstBidVO.size() > 0) {
                objBidVO = lstBidVO.get(0);
            } else {
                objBidVO = objBidBizService.readBid(strBidId);
            }
            String strProvinceName = objBidVO.getProvinceName();
            String strBidName =
                StringUtils.isBlank(strProvinceName) ? objBidVO.getBidName() : objBidVO.getBidName() + "("
                    + strProvinceName + ")";
            objBidVO.setBidName(strBidName);
            String strFileName = strBidName + "_分省公司评分模板.xls";
            objZipOutputStream.putNextEntry(new ZipEntry(strFileName));
            objBidIssueBizService.exportProvinceGrade(objBidVO, objZipOutputStream);
        }
        objZipOutputStream.close();
 
【注】这里的zip文件命名要采用“项目名称_分省公司评分模板.zip”的格式,这里要通过标的读取项目名称信息。
 
2.修改ProvinceGradeModelExcel.java,删除 行201的 os.close(); 代码。
 
3.保留现有的在标的上逐个导出该标的的分省公司评分模板的功能,修改BidMultiOperateAction.exportProvinceGrade方法
在response.flushBuffer();代码行前添加os.close();  。
0 0