Home > Java > javaTutorial > Example sharing of how Java can package multiple files into ZIP downloads based on Url

Example sharing of how Java can package multiple files into ZIP downloads based on Url

黄舟
Release: 2018-05-16 17:16:35
Original
2780 people have browsed it

This article mainly introduces the relevant information about JAVA packaging multiple files into ZIP downloads based on Url. Friends in need can refer to the

Compressed file code tool class:

public class UrlFilesToZip {
 private static final Logger logger = LoggerFactory.getLogger(UrlFilesToZip.class);
 //根据文件链接把文件下载下来并且转成字节码
 public byte[] getImageFromURL(String urlPath) {
  byte[] data = null;
  InputStream is = null;
  HttpURLConnection conn = null;
  try {
   URL url = new URL(urlPath);
   conn = (HttpURLConnection) url.openConnection();
   conn.setDoInput(true);
   // conn.setDoOutput(true);
   conn.setRequestMethod("GET");
   conn.setConnectTimeout(6000);
   is = conn.getInputStream();
   if (conn.getResponseCode() == 200) {
    data = readInputStream(is);
   } else {
    data = null;
   }
  } catch (MalformedURLException e) {
   logger.error("MalformedURLException", e);
  } catch (IOException e) {
   logger.error("IOException", e);
  } finally {
   try {
    if (is != null) {
     is.close();
    }
   } catch (IOException e) {
    logger.error("IOException", e);
   }
   conn.disconnect();
  }
  return data;
 }
 public byte[] readInputStream(InputStream is) {
  ByteArrayOutputStream baos = new ByteArrayOutputStream();
  byte[] buffer = new byte[1024];
  int length = -1;
  try {
   while ((length = is.read(buffer)) != -1) {
    baos.write(buffer, 0, length);
   }
   baos.flush();
  } catch (IOException e) {
   logger.error("IOException", e);
  }
  byte[] data = baos.toByteArray();
  try {
   is.close();
   baos.close();
  } catch (IOException e) {
   logger.error("IOException", e);
  }
  return data;
 }
}
Copy after login

Control layer Code:

public void filesdown(HttpServletResponse response){
 try {
   String filename = new String("xx.zip".getBytes("UTF-8"), "ISO8859-1");//控制文件名编码
   ByteArrayOutputStream bos = new ByteArrayOutputStream();
   ZipOutputStream zos = new ZipOutputStream(bos);
   UrlFilesToZip s = new UrlFilesToZip();
   int idx = 1;
   for (String oneFile : urls) {
    zos.putNextEntry(new ZipEntry("profile" + idx);
    byte[] bytes = s.getImageFromURL(oneFile);
    zos.write(bytes, 0, bytes.length);
    zos.closeEntry();
    idx++;
   }
   zos.close();
   response.setContentType("application/force-download");// 设置强制下载不打开
   response.addHeader("Content-Disposition", "attachment;fileName=" + filename);// 设置文件名
   OutputStream os = response.getOutputStream();
   os.write(bos.toByteArray());
   os.close();
  } catch (FileNotFoundException ex) {
   logger.error("FileNotFoundException", ex);
  } catch (Exception ex) {
   logger.error("Exception", ex);
  }
 }
 }
Copy after login

Note:

1. String filename = new String(“xx.zip”.getBytes(“UTF-8”), “ISO8859-1”); The package zip file name will not be garbled.

2. Be careful, otherwise the downloaded compressed package may not be decompressed. Before passing a value to OutputStream, you must first close the ZipOutputStream stream!

Summarize

The above is the detailed content of Example sharing of how Java can package multiple files into ZIP downloads based on Url. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template