Java多文件下载

java多文件下载


最近项目中需要一个多文件下载的功能,在网上搜索大部分实现方式都是打包下载,思路便是把要下载的文件复制到一个目录下,再压缩成一个zip包,然后来下载这个zip包来实现多文件下载的功能,我本身也是采用了这种方式来实现,但是当需要下载的文件特别大时,光是在压缩这一步就会耗费很久的时间,而且在压缩之前还需要把要下载的文件去复制到一个目录下,这也是很慢的,也尝试过用nio的方式去复制和压缩文件,效果是有的但是没有从根本上去解决问题,不妨去改变思路,把这耗时的操作去掉,来实现多文件下载,我的思路是在js代码中去循环调用下载功能,代码如下:

$(".btn-download").click(function(){
		        	   var ids;
		        	   var table = $("#table");
		        	   var tableSelect = table.bootstrapTable('getSelections');
		               var list = new Array();
		               var param;
		               for(var i=0;i<tableSelect.length;i++){
			            	param = tableSelect[i].id;
			            	list[i]=param;
			           }
		               $.ajax({
		               			//先检查是否有文件可供下载,若有success,若没有alert提示
		                		url:'/test/checkFile.json?',
		                		type:'post',
		                		dataType:'text',
		                		data: {id: ($.isArray(list) ? list.join(",") : list)},
		                		async: false,
		                	    success:function(response,status) {
		                	    	for(var i=0;i<tableSelect.length;i++){
		                	    		param = tableSelect[i].id;
		                	    		window.location.href='/test/downloadFileListGroup.json?id='+ param;		    
		                	    		var start=new Date().getTime();
		                	    		while(true){
			                	    		var time=new Date().getTime();
			                	    		if(time-start>3000){
			                	    		break;
			                	    		}
		                	    		} 
		                	    	}
		                		},
		                		error:function(xhr){
		                			alert("暂无相关文件可供下载!");
		                		}
		               });
		           })

这样在我本地开发环境中是可以运行的,但是到了测试环境上就变成了只下载最后一个文件,这是为什么呢?打dubug来运行发现等js的ajax方法走完才会进入到后台代码中,可能是浏览器版本问题,只能去把页面跳转的方式换成弹窗:
window.location.href=’/test/downloadFileListGroup.json?id=’+ param
window.open(["/test/downloadFileListGroup.json?id="+ param],["_blank"])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值