java后台批量下载文件并压缩成zip下载的方法
本文实例为大家分享了java后台批量下载文件并压缩成zip下载的具体代码,供大家参考,具体内容如下
因项目需要,将服务器上的图片文件压缩打包zip,下载到本地桌面。
首先,前端js:
functiondoQueryPic(){
varpicsDate=$("#picsDate").val();
varpiceDate=$("#piceDate").val();
varpicInst=$("#pic_inst").combotree("getValue");
varsvrCode=$("#pic_svr_code").val();
varpicsTime=$("#pic_stime").val();
varpiceTime=$("#pic_etime").val();
if(svrCode==null){
$.messager.alert('提示',"请输入交易查询代号");
return;
}else{
$.ajax({
type:"POST",
url:'queryPic.translog.action',
data:{f_brno:picInst,f_sdate:picsDate,f_edate:piceDate,f_svr_code:svrCode,f_stime:picsTime,f_etime:piceTime},
success:function(rcdata){
if(rcdata.success){
varrows=rcdata.picInfo;
vardetailHtml=" 全选日期有无影像交易名称交易状态设备编号交易代号所属机构交易时间 ";
for(vari=0;i"+rows[i].F_DATE+" "+rows[i].ISHASIMG+" "+rows[i].F_TX_NAME+" "+rows[i].F_STUS+" "+rows[i].F_DEV_ID+" "+rows[i].F_SVR_CODE+" "+rows[i].F_BRNO+" "+rows[i].F_TIME+" ";
}
detailHtml=detailHtml+" ";
document.getElementById("details").innerHTML=detailHtml;
}else{
$.messager.alert('提示',rcdata.errmsg);
}
},
error:function(){
alert("查询失败!");
}
});
}
}
以上代码是查询到相关数据后,显示在界面上,然后按客户需要可以自己选择下载哪几条数据保存。
附上CheckBox全选/取消全选js代码
//checkbox全选/取消全选
varisCheckAll=false;
functionswapCheck(){
if(isCheckAll){
$("input[type='checkbox']").each(function(){
this.checked=false;
});
isCheckAll=false;
}else{
$("input[type='checkbox']").each(function(){
this.checked=true;
});
isCheckAll=true;
}
}
下面代码是用来后台交互的,提示一下,下载文件都不要用ajax来送数据,我之前就是ajax做的,一直没法下载,困扰了一整天后来才发现的,注释部分就是ajax代码,大家作为参考可以看一下:
functiondownLoadPic(){
vararr=newArray();
varpicIDs=document.getElementsByName("pictureID");
for(i=0;i
接下来是后台交互,首先是controller控制层:
/**
*图片批量下载
*@paramrequest
*@paramresponse
*@return
*@throwsIOException
*/
publicvoiddownLoadPic(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException{
//Mapparams=getParameters(request);
String[]pictureIDs=request.getParameterValues("pictureID");
Authenticationau=getAuthentication(request);
service.downLoadPic(pictureIDs,au,request,response);
return;
}
service层:
publicvoiddownLoadPic(String[]params,Authenticationau,HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException{
//压缩文件初始设置
Stringpath=System.getProperty("ics.webapp.root");//这个是服务器路径地址,request.getSession().getServletContext().getRealPath()也一样能
StringfileZip=au.getUsername()+"-"+au.getAttribute("F_BRNO")+"Pictures.zip";
StringfilePath=path+"\\"+fileZip;//之后用来生成zip文件
//filePathArr为根据前台传过来的信息,通过数据库查询所得出的pdf文件路径集合(具体到后缀)
List
里面夹杂了json数组转格式问题,前端json传过来的如果是json.stringify格式化的,到后台就得用这种方式进行解析。
本人排版能力不咋样,大家将就看看,那边判断浏览器的也是网上抄的,结果发现根本没有用,无法识别中文,最后妥协了还是使用英文做文件名。如果有碰到中文乱码的,大家可以百度再搜搜,有其他人写过类似文章,我没精力研究了。
这个是压缩服务器上本身存在的文件方法,之前百度相关文章还看到过获取网络图片并压缩下载的,有点意思。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。