首页 > 编程知识 正文

java实现多图片打包下载(附前后端代码)

时间:2023-05-05 21:49:08 阅读:250105 作者:2936

某项目需要,要进行相关图片的打包下载功能,已解决,踩坑后打卡,整理如下:
后端
获取需要打包的图片文件路径(图片链接或图片保存的本地路径),之后设置压缩包名称,各图片名称,输入输出流操作,等进行实现,代码如下:

Controller层:

@RequestMapping("/downloadImgs") public void downLoadImgs(Long id,HttpServletRequest request, HttpServletResponse response) { String basepath=getBasePath(); // 本地资源路径 basepath = Global.getProfile(); orderInfoService.downloadImgs(id,basepath,request,response); }

Service层:(totalpassenger为信息列表,每条数据包含已获取的文件路径)

if(totalpassenger!=null&&totalpassenger.size()>0){ /*批量下载*/ try { String downloadFilename=""; String nowTimeString = String.valueOf(System.currentTimeMillis()); downloadFilename = order.getSysOrderNo()+"-"+order.getNickname()+".zip";//文件的名称 downloadFilename = URLEncoder.encode(downloadFilename, "UTF-8");//转换中文否则可能会产生乱码 response.setContentType("application/octet-stream");// 指明response的返回对象是文件流 response.setHeader("Content-Disposition", "attachment;filename=" + downloadFilename);// 设置在下载框默认显示的文件名 ZipOutputStream zos = new ZipOutputStream(response.getOutputStream()); FileInputStream ips = null; File file =new File(""); String url=""; byte[] buffer = new byte[1024]; int r=0; for (int i = 0; i < totalpassenger.size(); i++) { if(totalpassenger.get(i).getPassport_pic()!=null){ /* URL url2 = new URL(totalpassenger.get(i).getPassport_pic()); zos.putNextEntry(new ZipEntry(totalpassenger.get(i).getName()+"-护照"+".jpg")); InputStream fis2 = url2.openConnection().getInputStream(); while ((r = fis2.read(buffer)) != -1) { zos.write(buffer, 0, r); } fis2.close();*/ zos.putNextEntry(new ZipEntry(totalpassenger.get(i).getName()+"-护照"+".jpg")); url=totalpassenger.get(i).getPassport_pic(); //获取图片存放路径 file = new File(url); if(file.exists()) { ips = new FileInputStream(file); response.setContentType("multipart/form-data"); while ((r = ips.read(buffer)) != -1){ zos.write(buffer, 0, r); } if (null != ips) { ips.close(); } } } } zos.flush(); zos.close(); } catch (Exception e) { e.printStackTrace(); } }else{ return -1; }
怎么在Vue2中自定义一个图片懒加载指令

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。