导出多个文件,纳入zip流

本文介绍了一种在Web应用中实现文件批量下载并实时压缩为ZIP格式的方法。通过使用ServletActionContext及ZipOutputStream,文章详细展示了如何设置HTTP响应头以便浏览器正确处理下载请求,并通过循环执行SQL查询来分批次获取数据进行压缩。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

int page = size % ConfigUtil.configFileSize() == 0 ?
size / ConfigUtil.configFileSize() : size / ConfigUtil.configFileSize() + 1;

ZipOutputStream zos = new ZipOutputStream(os);
ServletActionContext.getResponse().addHeader("Content-Disposition",
"attachment; filename=\"" + (StringUtil.iso88591String(namedSql.getKeyword()) +
namedSql.getId() + DynamicConst.DYNAMIC_DOWNLOAD_ZIP_FILE_SUFFIX) + "\"");

try {
zos.flush();
for (int i=0; i<page; i++)
{
CommResult ret = sqlExecuteDao.executeQuery(
DynamicSqlUtil.generatePageSql(namedSql.getSql(), i * ConfigUtil.configFileSize() + 1, ConfigUtil.configFileSize()),
RequestUtil.parseRequest(namedSql.getParams()));

FileUtil.putZipEntryToFile(zos, ret, i + DynamicConst.DYNAMIC_DOWNLOAD_FILE_SUFFIX);
//

zos.putNextEntry( new ZipEntry(entryName));

FileUtil.writeHeader(zos, result.getColumns());

FileUtil.write(zos, result.getRowDatas());
os.write(FileUtil.listToString(data).getBytes());
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值