重磅资讯,干货,第一时间送达
今日推荐:推荐19个github超牛逼项目!个人原创100W +访问量博客:点击前往,查看更多
来源:blog.csdn.net/qq_40437152/article/details/111411364
前言
–
文件下载的场景很多(还不是需求丰富嘛~),那么什么是动态生成文件呢,就是用户选择文件内容,服务器端根据选择的数据生成某个格式的文件然后下载到客户端。单个嘛直接下载,多个打包下载咯!
项目场景
项目中有个数据导出excel的需求,而且是批量,那么就要打包咯
解决步骤
基本实现如下:
-
生成文件
-
保存到临时目录 || 缓存到内存中
-
将文件打包下载
我不想废话了,上代码:
直接把文件输出流放到压缩流ZipOutputStream
List fields = new ArrayList<>();
fields.add(“字段1”);
fields.add(“字段2”);
fields.add(“字段3”);
HSSFWorkbook workbook = excelUtil.getNewExcel(“压缩文件测试”, fields);
try {
response.setContentType(“application/zip; charset=UTF-8”);
//返回客户端浏览器的版本号、类型
String agent = request.getHeader(“USER-AGENT”);
String downloadName = “压缩文件测试.zip”;
//针对IE或者以IE为内核的浏览器:
if (agent.contains(“MSIE”) || agent.contains(“Trident”)) {
downloadName = java.net.URLEncoder.encode(downloadName, “UTF-8”);
} else {
downloadName = new String(downloadName.getBytes(“UTF-8”), “ISO-8859-1”);
}
response.setHeader(“Content-disposition”, “attachment;filename=” + downloadName);
ZipOutputStream zipOutputStream = new ZipOutputStream(response.getOutputStream());
//多个从这里就可遍历了
// --start
ZipEntry entry = new ZipEntry(“第一个文件名.xls”);
zipOutputStream.putNextEntry(entry);
ByteOutputStream byteOutputStream = new ByteOutputStream();
workbook.write(byteOutputStream);
byteOutputStream.writeTo(zipOutputStream);
// zipOutputStream.write(workbook.getBytes());
byteOutputStream.close();
zipOutputStream.closeEntry();
// --end
zipOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
结语
小编也是很有感触,如果一直都是在中小公司,没有接触过大型的互联网架构设计的话,只靠自己看书去提升可能一辈子都很难达到高级架构师的技术和认知高度。向厉害的人去学习是最有效减少时间摸索、精力浪费的方式。
我们选择的这个行业就一直要持续的学习,又很吃青春饭。
虽然大家可能经常见到说程序员年薪几十万,但这样的人毕竟不是大部份,要么是有名校光环,要么是在阿里华为这样的大企业。年龄一大,更有可能被裁。
送给每一位想学习Java小伙伴,用来提升自己。
本文到这里就结束了,喜欢的朋友可以帮忙点赞和评论一下,感谢支持!
序员年薪几十万,但这样的人毕竟不是大部份,要么是有名校光环,要么是在阿里华为这样的大企业。年龄一大,更有可能被裁。
送给每一位想学习Java小伙伴,用来提升自己。
[外链图片转存中…(img-EpfrNWFx-1711006432684)]
本文到这里就结束了,喜欢的朋友可以帮忙点赞和评论一下,感谢支持!