java实现批量下载

liangqun2013 2014-11-04 01:05:20
大家好,有这么个需求。前台页面有多个多选框,用户选定那几个,就下载这几个。注:不是打包下载,是一个一个下载。下面的代码是单独下载一个文件的时候,多个文件的话请问大家怎么实现,前台要怎么传参数,而且一个request对应一个response,前台只执行一次,怎么让后台多次执行?
String fileName = request.getParameter("fileName");
response.setContentType("application/OCTET-STREAM;charset=UTF-8");
response.setHeader("Content-Dispositon", "attachment;filename="+fileName);
String path = "E:\\file";
File file = new File(path,fileName);
FileInputStream fis = null;
BufferedOutputStream bos = null;
try {
fis = new FileInputStream(file);
bos = new BufferedOutputStream(response.getOutputStream());
byte[] buffer = new byte[1024];
int len;
while((len=fis.read(buffer))!=-1){
bos.write(buffer,0,len);
bos.flush();
}
} catch (Exception e) {
e.printStackTrace();
}finally{
fis.close();
bos.close();
}

...全文
1152 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_39050244 2017-07-27
  • 打赏
  • 举报
回复
那插件怎么用啊 求告知
a277632346 2017-04-20
  • 打赏
  • 举报
回复
批量下载问题楼主解决了吗?
liangqun2013 2014-11-04
  • 打赏
  • 举报
回复
引用 5 楼 zstaogangt 的回复:
[quote=引用 楼主 liangqun2013 的回复:] 大家好,有这么个需求。前台页面有多个多选框,用户选定那几个,就下载这几个。注:不是打包下载,是一个一个下载。下面的代码是单独下载一个文件的时候,多个文件的话请问大家怎么实现,前台要怎么传参数,而且一个request对应一个response,前台只执行一次,怎么让后台多次执行?
String fileName = request.getParameter("fileName");
		response.setContentType("application/OCTET-STREAM;charset=UTF-8");
		response.setHeader("Content-Dispositon", "attachment;filename="+fileName);
		String path = "E:\\file";
		File file = new File(path,fileName);
		FileInputStream fis = null;
		BufferedOutputStream bos = null;
		try {
			fis = new FileInputStream(file);
			bos = new BufferedOutputStream(response.getOutputStream());
			byte[] buffer = new byte[1024];
			int len;
			while((len=fis.read(buffer))!=-1){
				bos.write(buffer,0,len);
				bos.flush();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			fis.close();
			bos.close();
		}
楼主试试这个控件:http://www.cnblogs.com/xproer/archive/2011/03/26/1996322.html 默认界面 批量下载中 下载中... 下载完毕 示例代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>HTTP文件下载控件演示页面</title>
    <link type="text/css" href="HttpDownloader/HttpDownloader.css" rel="Stylesheet"/>
    <script type="text/javascript" src="HttpDownloader/HttpDownloader.js" charset="utf-8"></script>
</head>
<body>
<input type="button" value="下载测试文件" onclick="StartDown()" />
<div id="downDiv"></div>
    <script type="text/javascript" language="javascript">
    	var downerMgr = new FileDownloaderMgr();
    	downerMgr.Config["Folder"] = "F:\\";
    	downerMgr.LoadTo("downDiv");

		window.onload = function()
		{
			downerMgr.Init();
		};
		
		function StartDown()
		{
			//添加到下载队列
			downerMgr.AddFile("http://www.ncmem.com/images/ico-ftp.jpg");
			downerMgr.PostFirst();
		}

		function copyFile()
		{
			var obj = new ActiveXObject(downerMgr.ActiveX["Partition"]);
			obj.CopyFile("f:\\ftp\\test.gif","f:\\ftp\\test1.gif");
		}

		function copyFolder()
		{
			var obj = new ActiveXObject(downerMgr.ActiveX["Partition"]);
			obj.CopyFile("f:\\ftp\\test.gif","f:\\ftp\\ftp1");
		}
		
		function moveFile()
		{
			var obj = new ActiveXObject(downerMgr.ActiveX["Partition"]);
			obj.MoveFile("f:\\ftp\\test.gif","f:\\ftp\\test2.gif");
		}
		
		function moveFolder()
		{
			var obj = new ActiveXObject(downerMgr.ActiveX["Partition"]);
			obj.MoveFile("f:\\ftp\\test2.gif","f:\\ftp\\ftp1");
		}
		
	</script>
	<input type="button" value="复制到文件" onclick="copyFile()" />
	<input type="button" value="复制到文件夹" onclick="copyFolder()" />
	<input type="button" value="移动文件" onclick="moveFile()" />
	<input type="button" value="移动到文件夹" onclick="moveFolder()" />
</body>
</html>
资源下载: cab安装包(x86) cab安装包(x64) xpi安装包 crx安装包 exe安装包 开发文档 根证书 示例下载: asp.net示例 jsp-access示例 jsp-mysql示例 jsp-oracle示例 jsp-sql示例 php示例[/quote] 用的话还得花钱买是吗?
sanweri 2014-11-04
  • 打赏
  • 举报
回复
引用 5 楼 zstaogangt 的回复:
楼主试试这个控件:http://www.cnblogs.com/xproer/archive/2011/03/26/1996322.html 默认界面 批量下载中 下载中... 下载完毕 示例代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>HTTP文件下载控件演示页面</title>
    <link type="text/css" href="HttpDownloader/HttpDownloader.css" rel="Stylesheet"/>
    <script type="text/javascript" src="HttpDownloader/HttpDownloader.js" charset="utf-8"></script>
</head>
<body>
<input type="button" value="下载测试文件" onclick="StartDown()" />
<div id="downDiv"></div>
    <script type="text/javascript" language="javascript">
    	var downerMgr = new FileDownloaderMgr();
    	downerMgr.Config["Folder"] = "F:\\";
    	downerMgr.LoadTo("downDiv");

		window.onload = function()
		{
			downerMgr.Init();
		};
		
		function StartDown()
		{
			//添加到下载队列
			downerMgr.AddFile("http://www.ncmem.com/images/ico-ftp.jpg");
			downerMgr.PostFirst();
		}

		function copyFile()
		{
			var obj = new ActiveXObject(downerMgr.ActiveX["Partition"]);
			obj.CopyFile("f:\\ftp\\test.gif","f:\\ftp\\test1.gif");
		}

		function copyFolder()
		{
			var obj = new ActiveXObject(downerMgr.ActiveX["Partition"]);
			obj.CopyFile("f:\\ftp\\test.gif","f:\\ftp\\ftp1");
		}
		
		function moveFile()
		{
			var obj = new ActiveXObject(downerMgr.ActiveX["Partition"]);
			obj.MoveFile("f:\\ftp\\test.gif","f:\\ftp\\test2.gif");
		}
		
		function moveFolder()
		{
			var obj = new ActiveXObject(downerMgr.ActiveX["Partition"]);
			obj.MoveFile("f:\\ftp\\test2.gif","f:\\ftp\\ftp1");
		}
		
	</script>
	<input type="button" value="复制到文件" onclick="copyFile()" />
	<input type="button" value="复制到文件夹" onclick="copyFolder()" />
	<input type="button" value="移动文件" onclick="moveFile()" />
	<input type="button" value="移动到文件夹" onclick="moveFolder()" />
</body>
</html>
资源下载: cab安装包(x86) cab安装包(x64) xpi安装包 crx安装包 exe安装包 开发文档 根证书 示例下载: asp.net示例 jsp-access示例 jsp-mysql示例 jsp-oracle示例 jsp-sql示例 php示例
不错,挺好用,界面也挺有美感,感谢分享
nmeniagaid 2014-11-04
  • 打赏
  • 举报
回复
引用 5 楼 zstaogangt 的回复:
Xproer.HttpDownloader:http://www.cnblogs.com/xproer/archive/2011/03/26/1996322.html 示例代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>HTTP文件下载控件演示页面</title>
    <link type="text/css" href="HttpDownloader/HttpDownloader.css" rel="Stylesheet"/>
    <script type="text/javascript" src="HttpDownloader/HttpDownloader.js" charset="utf-8"></script>
</head>
<body>
<input type="button" value="下载测试文件" onclick="StartDown()" />
<div id="downDiv"></div>
    <script type="text/javascript" language="javascript">
    	var downerMgr = new FileDownloaderMgr();
    	downerMgr.Config["Folder"] = "F:\\";
    	downerMgr.LoadTo("downDiv");

		window.onload = function()
		{
			downerMgr.Init();
		};
		
		function StartDown()
		{
			//添加到下载队列
			downerMgr.AddFile("http://www.ncmem.com/images/ico-ftp.jpg");
			downerMgr.PostFirst();
		}

		function copyFile()
		{
			var obj = new ActiveXObject(downerMgr.ActiveX["Partition"]);
			obj.CopyFile("f:\\ftp\\test.gif","f:\\ftp\\test1.gif");
		}

		function copyFolder()
		{
			var obj = new ActiveXObject(downerMgr.ActiveX["Partition"]);
			obj.CopyFile("f:\\ftp\\test.gif","f:\\ftp\\ftp1");
		}
		
		function moveFile()
		{
			var obj = new ActiveXObject(downerMgr.ActiveX["Partition"]);
			obj.MoveFile("f:\\ftp\\test.gif","f:\\ftp\\test2.gif");
		}
		
		function moveFolder()
		{
			var obj = new ActiveXObject(downerMgr.ActiveX["Partition"]);
			obj.MoveFile("f:\\ftp\\test2.gif","f:\\ftp\\ftp1");
		}
		
	</script>
	<input type="button" value="复制到文件" onclick="copyFile()" />
	<input type="button" value="复制到文件夹" onclick="copyFolder()" />
	<input type="button" value="移动文件" onclick="moveFile()" />
	<input type="button" value="移动到文件夹" onclick="moveFolder()" />
</body>
</html>
资源下载: cab安装包(x86) cab安装包(x64) xpi安装包 crx安装包 exe安装包 开发文档 根证书 示例下载: asp.net示例 jsp-access示例 jsp-mysql示例 jsp-oracle示例 jsp-sql示例 php示例
这个不错。收下了,谢谢。 最近公司在做一个云存储项目,正好也有这个需求。
V08S20 2014-11-04
  • 打赏
  • 举报
回复
建议使用插件来实现。普通JS,JQUERY不好实现。
z1ootwo 2014-11-04
  • 打赏
  • 举报
回复
引用 楼主 liangqun2013 的回复:
大家好,有这么个需求。前台页面有多个多选框,用户选定那几个,就下载这几个。注:不是打包下载,是一个一个下载。下面的代码是单独下载一个文件的时候,多个文件的话请问大家怎么实现,前台要怎么传参数,而且一个request对应一个response,前台只执行一次,怎么让后台多次执行?
String fileName = request.getParameter("fileName");
		response.setContentType("application/OCTET-STREAM;charset=UTF-8");
		response.setHeader("Content-Dispositon", "attachment;filename="+fileName);
		String path = "E:\\file";
		File file = new File(path,fileName);
		FileInputStream fis = null;
		BufferedOutputStream bos = null;
		try {
			fis = new FileInputStream(file);
			bos = new BufferedOutputStream(response.getOutputStream());
			byte[] buffer = new byte[1024];
			int len;
			while((len=fis.read(buffer))!=-1){
				bos.write(buffer,0,len);
				bos.flush();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			fis.close();
			bos.close();
		}
貌似使用控件比较容易实现。 如果是普通的JSP+HTML,只能打包。
activexme 2014-11-04
  • 打赏
  • 举报
回复
这个需求可能需要使用控件来实现。像QQ邮箱里面是调用的QQ旋风。现在改为了QQ下载助手。360网盘是直接打的包。百度是直接调用的百度云网盘。
zqjer2 2014-11-04
  • 打赏
  • 举报
回复
前台传一个文件路径的集合或者文件的id的集合(用于查询该文件的路径),后台拿到这个操作获得list<文件路径>,然后遍历该list,针对每个list,生成一个线程 ,线程里面的内容就是调用单个文件下载的方法,就会出现n个下载窗口了。
中琦 2014-11-04
  • 打赏
  • 举报
回复
for 循环呗。。 循环一次。拿一次地址,下下来就OK 。
liangqun2013 2014-11-04
  • 打赏
  • 举报
回复
《SSM教学管理系统》该项目采用技术jsp、SpringMVC、Spring、Mybatis、tomcat服务器、mysql数据库 开发工具eclipse,项目含有源码、文档、配套开发软件、软件安装教程、项目发布教程    项目介绍:    系统管理:用户登录、用户退出等    学生管理:主要实现对学生的增加、删除、查询、修改以及批量删除相关操作    教师管理:主要实现对教师信息的增加、删除、查询、修改、批量删除等相关操作    课程管理:主要实现对课程的增加、删除、查询、修改、批量删除、排课等相关操作    班级管理:主要实现对班级的增加、删除、查询、修改、批量删除、查看本班学生信息等相关操作权限的控制等    1、学会各类开发软件安装、项目导入以及项目发布,含项目源码,需求文档,配套软件等     2、该项目主要功能完善,主要用于简历项目经验丰富,以及毕业设计或者二次开发    3、提供项目源码,设计文档、数据库sql文件以及所有配套软件,按照教程即可轻松实现项目安装部署项目实战课程:代码视频讲解版如下java项目实战之电商系统全套(前台和后台)(java毕业设计ssm框架项目)https://edu.csdn.net/course/detail/25771java项目之oa办公管理系统(java毕业设计)https://edu.csdn.net/course/detail/23008java项目之hrm人事管理项目(java毕业设计)https://edu.csdn.net/course/detail/23007JavaWeb项目实战之点餐系统前台https://edu.csdn.net/course/detail/20543JavaWeb项目实战之点餐系统后台https://edu.csdn.net/course/detail/19572JavaWeb项目实战之宿舍管理系统https://edu.csdn.net/course/detail/26721JavaWeb项目实战之点餐系统全套(前台和后台)https://edu.csdn.net/course/detail/20610java项目实战之电子商城后台(java毕业设计SSM框架项目)https://edu.csdn.net/course/detail/25770java美妆商城项目|在线购书系统(java毕业设计项目ssm版)https://edu.csdn.net/course/detail/23989系统学习课程:JavaSE基础全套视频(环境搭建 面向对象 正则表达式 IO流 多线程 网络编程 java10https://edu.csdn.net/course/detail/26941Java Web从入门到电商项目实战挑战万元高薪(javaweb教程)https://edu.csdn.net/course/detail/25976其他素材版(毕业设计或课程设计)项目:点击老师头像进行相关课程学习

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧