亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

在JAVA項目中怎么根據Url把文件打包成ZIP

發布時間:2020-12-01 17:30:25 來源:億速云 閱讀:251 作者:Leah 欄目:編程語言

在JAVA項目中怎么根據Url把文件打包成ZIP?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

壓縮文件代碼工具類:

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;
 }
}

控制層代碼:

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);
  }
 }
 }

注意:

1. String filename = new String(“xx.zip”.getBytes(“UTF-8”), “ISO8859-1”);包裝zip文件名不發生亂碼。

2.一定要注意,否則會發生下載下來的壓縮包無法解壓。在給OutputStream 傳值之前,一定要先把ZipOutputStream的流給關閉了!

看完上述內容,你們掌握在JAVA項目中怎么根據Url把文件打包成ZIP的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

盘锦市| 武定县| 中西区| 永川市| 静海县| 石棉县| 锡林郭勒盟| 林芝县| 鹤壁市| 武鸣县| 景德镇市| 云浮市| 南通市| 塘沽区| 文山县| 红安县| 南投县| 海宁市| 孝感市| 永仁县| 平安县| 井陉县| 德保县| 襄垣县| 洛南县| 和政县| 房山区| 武宁县| 商河县| 同江市| 穆棱市| 漳平市| 普兰店市| 青川县| 上思县| 红安县| 江源县| 礼泉县| 治县。| 四子王旗| 拉孜县|