java后台批量下载文件并压缩成zip下载的方法
本文实例为大家分享了java后台批量下载文件并压缩成zip下载的具体代码,供大家参考,具体内容如下
创新互联是一家集网站建设,阜宁企业网站建设,阜宁品牌网站建设,网站定制,阜宁网站建设报价,网络营销,网络优化,阜宁网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
因项目需要,将服务器上的图片文件压缩打包zip,下载到本地桌面。
首先,前端js:
function doQueryPic() { var picsDate = $("#picsDate").val(); var piceDate = $("#piceDate").val(); var picInst = $("#pic_inst").combotree("getValue"); var svrCode = $("#pic_svr_code").val(); var picsTime = $("#pic_stime").val(); var piceTime = $("#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){ var rows = rcdata.picInfo; var detailHtml = "
全选 | 日期 | 有无影像 | 交易名称 | 交易状态 | 设备编号 | 交易代号 | 所属机构 | 交易时间 |
---|---|---|---|---|---|---|---|---|
" + 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 + " |
以上代码是查询到相关数据后,显示在界面上,然后按客户需要可以自己选择下载哪几条数据保存。
附上CheckBox全选/取消全选js代码
//checkbox 全选/取消全选 var isCheckAll = false; function swapCheck() { 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代码,大家作为参考可以看一下:
function downLoadPic() { var arr = new Array(); var picIDs = document.getElementsByName("pictureID"); for (i = 0; i < picIDs.length; i++) { if (picIDs[i].checked) { arr.push(picIDs[i].value); } } if (arr.length <= 0 ) { $.messager.alert('提示', "无下载内容!"); return; }else{ $('#formPic').attr('action','downLoadPic.translog.action'); $("#formPic").form('submit',{ onSubmit:function(){ }, success:function(data){ $.messager.alert('提示','图片下载成功','info'); } }); /** *$.ajax({ type: "POST", url: 'downLoadPic.translog.action', data: {pictureList:JSON.stringify(arr)}, success: function(rcdata){ if(rcdata.success){ $.messager.show({ title : '成功', msg : rcdata.errmsg }); }else{ $.messager.alert('提示',rcdata.errmsg); } }, error:function(){ alert("查询失败!"); } }); */ } }
接下来是后台交互,首先是controller控制层:
/** * 图片批量下载 * @param request * @param response * @return * @throws IOException */ public void downLoadPic(HttpServletRequest request,HttpServletResponse response) throws IOException{ //Mapparams = getParameters(request); String[] pictureIDs = request.getParameterValues("pictureID"); Authentication au=getAuthentication(request); service.downLoadPic(pictureIDs, au, request, response); return ; }
service层:
public void downLoadPic(String[] params,Authentication au,HttpServletRequest request,HttpServletResponse response) throws IOException { //压缩文件初始设置 String path=System.getProperty("ics.webapp.root");//这个是服务器路径地址,request.getSession().getServletContext().getRealPath() 也一样能 String fileZip = au.getUsername()+"-"+au.getAttribute("F_BRNO")+ "Pictures.zip"; String filePath = path+"\\" + fileZip;//之后用来生成zip文件 //filePathArr为根据前台传过来的信息,通过数据库查询所得出的pdf文件路径集合(具体到后缀) List
里面夹杂了json数组转格式问题,前端json传过来的如果是json.stringify格式化的,到后台就得用这种方式进行解析。
本人排版能力不咋样,大家将就看看,那边判断浏览器的也是网上抄的,结果发现根本没有用,无法识别中文,最后妥协了还是使用英文做文件名。如果有碰到中文乱码的,大家可以百度再搜搜,有其他人写过类似文章,我没精力研究了。
这个是压缩服务器上本身存在的文件方法,之前百度相关文章还看到过获取网络图片并压缩下载的,有点意思。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持创新互联。
标题名称:java后台批量下载文件并压缩成zip下载的方法
新闻来源:http://hbruida.cn/article/gheioi.html