社区
Web 开发
帖子详情
请问一次下载多个文件怎么做
wren4255
2013-12-19 09:50:36
我用的是wicket框架,一次下载一个文件很简单用自带的类,可是下载多个文件的时候怎么办呢 不能一个劲蹦保存框吧
目前只能想到两个办法
1所有选择文件放到一个文件夹
2把所有选择文件压缩成zip然后保存
不管哪种方法都不知道如何实现所以来这里提问
什么框架都行 请问大家一次下载多个文件是怎么做的?java语言
...全文
180
3
打赏
收藏
请问一次下载多个文件怎么做
我用的是wicket框架,一次下载一个文件很简单用自带的类,可是下载多个文件的时候怎么办呢 不能一个劲蹦保存框吧 目前只能想到两个办法 1所有选择文件放到一个文件夹 2把所有选择文件压缩成zip然后保存 不管哪种方法都不知道如何实现所以来这里提问 什么框架都行 请问大家一次下载多个文件是怎么做的?java语言
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
teemai
2013-12-19
打赏
举报
回复
一般直接打成zip包,下载这个文件
Tap殇
2013-12-19
打赏
举报
回复
/文件打包下载 public static HttpServletResponse downLoadFiles(List<File> files, HttpServletRequest request, HttpServletResponse response) throws Exception { try { /**这个集合就是你想要打包的所有文件, * 这里假设已经准备好了所要打包的文件*/ //List<File> files = new ArrayList<File>(); /**创建一个临时压缩文件, * 我们会把文件流全部注入到这个文件中 * 这里的文件你可以自定义是.rar还是.zip*/ File file = new File("c:/certpics.rar"); if (!file.exists()){ file.createNewFile(); } response.reset(); //response.getWriter() //创建文件输出流 FileOutputStream fous = new FileOutputStream(file); /**打包的方法我们会用到ZipOutputStream这样一个输出流, * 所以这里我们把输出流转换一下*/ ZipOutputStream zipOut = new ZipOutputStream(fous); /**这个方法接受的就是一个所要打包文件的集合, * 还有一个ZipOutputStream*/ zipFile(files, zipOut); zipOut.close(); fous.close(); return downloadZip(file,response); }catch (Exception e) { e.printStackTrace(); } /**直到文件的打包已经成功了, * 文件的打包过程被我封装在FileUtil.zipFile这个静态方法中, * 稍后会呈现出来,接下来的就是往客户端写数据了*/ return response ; } /** * 把接受的全部文件打成压缩包 * @param List<File>; * @param org.apache.tools.zip.ZipOutputStream */ public static void zipFile (List files,ZipOutputStream outputStream) { int size = files.size(); for(int i = 0; i < size; i++) { File file = (File) files.get(i); zipFile(file, outputStream); } } public static HttpServletResponse downloadZip(File file,HttpServletResponse response) { try { // 以流的形式下载文件。 InputStream fis = new BufferedInputStream(new FileInputStream(file.getPath())); byte[] buffer = new byte[fis.available()]; fis.read(buffer); fis.close(); // 清空response response.reset(); OutputStream toClient = new BufferedOutputStream(response.getOutputStream()); response.setContentType("application/octet-stream"); //如果输出的是中文名的文件,在此处就要用URLEncoder.encode方法进行处理 response.setHeader("Content-Disposition", "attachment;filename=" +URLEncoder.encode(file.getName(), "UTF-8")); toClient.write(buffer); toClient.flush(); toClient.close(); } catch (IOException ex) { ex.printStackTrace(); }finally{ try { File f = new File(file.getPath()); f.delete(); } catch (Exception e) { e.printStackTrace(); } } return response; } /** * 根据输入的文件与输出流对文件进行打包 * @param File * @param org.apache.tools.zip.ZipOutputStream */ public static void zipFile(File inputFile, ZipOutputStream ouputStream) { try { if(inputFile.exists()) { /**如果是目录的话这里是不采取操作的, * 至于目录的打包正在研究中*/ if (inputFile.isFile()) { FileInputStream IN = new FileInputStream(inputFile); BufferedInputStream bins = new BufferedInputStream(IN, 512); //org.apache.tools.zip.ZipEntry ZipEntry entry = new ZipEntry(inputFile.getName()); ouputStream.putNextEntry(entry); // 向压缩文件中输出数据 int nNumber; byte[] buffer = new byte[512]; while ((nNumber = bins.read(buffer)) != -1) { ouputStream.write(buffer, 0, nNumber); } // 关闭创建的流对象 bins.close(); IN.close(); } else { try { File[] files = inputFile.listFiles(); for (int i = 0; i < files.length; i++) { zipFile(files[i], ouputStream); } } catch (Exception e) { e.printStackTrace(); } } } } catch (Exception e) { e.printStackTrace(); } }
tony4geek
2013-12-19
打赏
举报
回复
多线程下载了。
FFmpeg4.3系列之26:视频监控之H265多路摄像头播控项目实战
音视频与流媒体是一门很复杂的技术,涉及的概念、原理、理论非常多,很多初学者不学 基础理论,而是直接
做
项目,往往会看到c/c++的代码时一头雾水,不知道代码到底是什么意思,这是为什么呢? ...
Java大数据培训学校全套教程-51)MapReduce进阶
所以这套课程都能自己学下来,等于上了培训学 校
一次
,完全可以找个java工程师的工作了。 通过学习MapReduce程序,如何输入
文件
是两个
文件
,Partitioner的用法,Combiner的用法,自定义对象,...
零基础学期货CTP量化交易
一般情况下,最多可以从期货公司服务器上得到两个Tick/秒, 但通过把
多个
期货公司的数据融合,以MA801为例,我们可以拿到最多一秒6次不重复的Tick,可以用来
做
高频交易。这是目前任何交易软件和其它框架都不能实现的...
IBM System 3650 M4服务器规划RAID安装win2008R2
本课程教你在IBM服务器上规划RAID和安装win2008R2,在维护IBM服务器的时候经常遇到RAID卡信息丢失,虽然
多个
硬盘
做
了RAID1或RAID5,
一次
断电 或不关机热插拔硬盘,导致系统无法正常启动,影响业务正常运行,同时硬盘...
基于SSM大学生自主学习平台(毕设)
1,项目功能: 开发一个在线学习平台,一共3个身份:管理员,老师和学生! ①管理员功能:登录后可以添加学生信息,管理所有学生信息,添加单个老师信息,也可以批量导入很多老师信息,管理所有老师...
Web 开发
81,092
社区成员
341,717
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章