淄博做网站的公司排名,百度网络推广营销,代做效果图的网站好,中国建设银行员工培训网站Springboot将多个图片导出成zip压缩包 将多个图片导出成zip压缩包 /*** 判断时间差是否超过6小时* param startTime 开始时间* param endTime 结束时间* return*/public static boolean isWithin6Hours(String startTime, String endTime) {// 定义日期时间格式DateTimeFormatt…Springboot将多个图片导出成zip压缩包 将多个图片导出成zip压缩包 /*** 判断时间差是否超过6小时* param startTime 开始时间* param endTime 结束时间* return*/public static boolean isWithin6Hours(String startTime, String endTime) {// 定义日期时间格式DateTimeFormatter formatter DateTimeFormatter.ofPattern(yyyy-MM-dd HH:mm:ss);// 将字符串转换为 LocalDateTimeLocalDateTime startDateTime LocalDateTime.parse(startTime,formatter);LocalDateTime endDateTime LocalDateTime.parse(endTime,formatter);// 检查两个时间之间的时间差long hoursDifference ChronoUnit.SECONDS.between(startDateTime, endDateTime);// 如果小时差小于等于6小时则符合条件return hoursDifference 6 * 60 * 60;}/*** 批量下载上传的图片** param startTime 开始时间* param endTime 结束时间*/public void batchDownloadUploadPhoto(String startTime, String endTime,String fieldId,String unitTypeId,Integer unitNo,Integer termAddr, HttpServletResponse response, HttpServletRequest request) {if (StringUtils.isEmpty(startTime) || StringUtils.isEmpty(endTime)) {throw new DataValidateErrorException(请先传递时间在批量导出);}if (!startTime.contains(:) || !endTime.contains(:)) {throw new DataValidateErrorException(请传递时分秒);}//相隔时间不得超过6小时if(!isWithin6Hours(startTime,endTime)){//大于6小时抛出异常throw new DataValidateErrorException(导出的时间范围不得超过6小时);}//查询导出图片urlListChuteImageAddress addressList chuteImageAddressService.selectUploadPhoto(startTime, endTime, fieldId, unitTypeId, unitNo, termAddr);//没有数据时抛出异常if(CollectionUtils.isEmpty(addressList)){throw new DataValidateErrorException(无数据导出);}DownloadByteArray downloadByteArray new DownloadByteArray();// 创建临时文件File zipFile null;FileInputStream fis null;BufferedInputStream buff null;ZipOutputStream zos null;CheckedOutputStream cos null;FileOutputStream fot null;ServletOutputStream os null;try {//临时文件名称zipFile File.createTempFile( System.currentTimeMillis(), .zip);fot new FileOutputStream(zipFile);// 为任何OutputStream产生校验第一个参数是制定产生校验和的输出流第二个参数是指定Checksum的类型 (Adler32(较快)和CRC32两种)cos new CheckedOutputStream(fot, new Adler32());// 用于将数据压缩成Zip文件格式zos new ZipOutputStream(cos);String[] files new String[addressList.size()];ListString list addressList.stream().map(ChuteImageAddress::getImgUrl).collect(Collectors.toList());list.toArray(files);for (int i 0; i files.length; i) {String file files[i];zos.putNextEntry(new ZipEntry(addressList.get(i).getImgName()));StorePath storePath StorePath.praseFromUrl(file);byte[] fileBytes client.downloadFile(storePath.getGroup(), storePath.getPath(), downloadByteArray);zos.write(fileBytes);}os response.getOutputStream();//下载文件,使用spring框架中的FileCopyUtils工具response.setCharacterEncoding(GB2312);response.setContentType(request.getSession().getServletContext().getMimeType(UUIDUtil.create()));//设置响应头,attachment表示以附件的形式下载inline表示在线打开response.setHeader(content-disposition, attachment;fileName URLEncoder.encode(批量下载.zip, UTF-8));fis new FileInputStream(zipFile);buff new BufferedInputStream(fis);FileCopyUtils.copy(buff, os);} catch (Exception e) {log.error(【批量下载图片出现异常】异常原因 e.getMessage());} finally {if (zos ! null) {try {zos.close();} catch (IOException e) {e.printStackTrace();}}if (fot ! null) {try {fot.close();} catch (IOException e) {e.printStackTrace();}}if (os ! null) {try {os.close();} catch (IOException e) {e.printStackTrace();}}if (fis ! null) {try {fis.close();} catch (IOException e) {e.printStackTrace();}}if (buff ! null) {try {buff.close();} catch (IOException e) {e.printStackTrace();}}}}