最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JAVA 根據(jù)Url把多文件打包成ZIP下載實(shí)例

 更新時(shí)間:2017年08月11日 17:14:02   作者:莫哈_  
這篇文章主要介紹了JAVA 根據(jù)Url把多文件打包成ZIP下載的相關(guān)資料,需要的朋友可以參考下

壓縮文件代碼工具類:

public class UrlFilesToZip {
 private static final Logger logger = LoggerFactory.getLogger(UrlFilesToZip.class);
 //根據(jù)文件鏈接把文件下載下來(lái)并且轉(zhuǎn)成字節(jié)碼
 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");// 設(shè)置強(qiáng)制下載不打開
   response.addHeader("Content-Disposition", "attachment;fileName=" + filename);// 設(shè)置文件名
   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文件名不發(fā)生亂碼。

2.一定要注意,否則會(huì)發(fā)生下載下來(lái)的壓縮包無(wú)法解壓。在給OutputStream 傳值之前,一定要先把ZipOutputStream的流給關(guān)閉了!

總結(jié)

以上所述是小編給大家介紹的JAVA 根據(jù)Url把多文件打包成ZIP下載,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Cookie的工作原理和應(yīng)用詳解

    Cookie的工作原理和應(yīng)用詳解

    Cookies是 web站點(diǎn)放置到你的硬盤上的程序。它們駐留在你的計(jì)算機(jī)上收集關(guān)于你在因特網(wǎng)上所做的一切事情的信息,并且 web站點(diǎn)可以在任何時(shí)候讀取到Cookies收集到的所有信息
    2021-06-06
  • Java PriorityQueue數(shù)據(jù)結(jié)構(gòu)接口原理及用法

    Java PriorityQueue數(shù)據(jù)結(jié)構(gòu)接口原理及用法

    這篇文章主要介紹了Java PriorityQueue數(shù)據(jù)結(jié)構(gòu)接口原理及用法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • SpringSceurity實(shí)現(xiàn)短信驗(yàn)證碼功能的示例代碼

    SpringSceurity實(shí)現(xiàn)短信驗(yàn)證碼功能的示例代碼

    這篇文章主要介紹了SpringSceurity實(shí)現(xiàn)短信驗(yàn)證碼功能的示例代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Spring中的@Scope注解詳細(xì)講解及示例

    Spring中的@Scope注解詳細(xì)講解及示例

    這篇文章主要介紹了Spring中的@Scope注解詳細(xì)講解及示例,@Scope注解是 Spring IOC 容器中的一個(gè)作用域,在 Spring IOC 容器中,他用來(lái)配置Bean實(shí)例的作用域?qū)ο?需要的朋友可以參考下
    2023-11-11
  • Java使用Ajax實(shí)現(xiàn)跨域上傳圖片功能

    Java使用Ajax實(shí)現(xiàn)跨域上傳圖片功能

    這篇文章主要介紹了Java使用Ajax實(shí)現(xiàn)跨域上傳圖片功能,需要的朋友可以參考下
    2017-09-09
  • JAVASE精密邏輯控制過程詳解(分支和循環(huán)語(yǔ)句)

    JAVASE精密邏輯控制過程詳解(分支和循環(huán)語(yǔ)句)

    在一個(gè)程序執(zhí)行的過程中各條語(yǔ)句的執(zhí)行順序?qū)Τ绦虻慕Y(jié)果是有直接影響的,這篇文章主要給大家介紹了關(guān)于JAVASE精密邏輯控制(分支和循環(huán)語(yǔ)句)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-04-04
  • SpringBoot事務(wù)鉤子函數(shù)的使用方式

    SpringBoot事務(wù)鉤子函數(shù)的使用方式

    本文介紹了SpringBoot中事務(wù)鉤子函數(shù)的使用方式,包括常見場(chǎng)景、使用方式等,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-11-11
  • Java面試題沖刺第八天--Spring框架2

    Java面試題沖刺第八天--Spring框架2

    這篇文章主要為大家分享了最有價(jià)值的三道Spring框架面試題,涵蓋內(nèi)容全面,包括數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)的題目、經(jīng)典面試編程題等,感興趣的小伙伴們可以參考一下
    2021-07-07
  • springBoot整合shiro如何解決讀取不到@value值問題

    springBoot整合shiro如何解決讀取不到@value值問題

    這篇文章主要介紹了springBoot整合shiro如何解決讀取不到@value值問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,
    2023-08-08
  • Java實(shí)現(xiàn)Huffman編碼的示例代碼

    Java實(shí)現(xiàn)Huffman編碼的示例代碼

    Huffman編碼是一種編碼方式,本文主要介紹了Java實(shí)現(xiàn)Huffman編碼的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-08-08

最新評(píng)論

射阳县| 莫力| 凌云县| 偃师市| 酉阳| 荆州市| 屏东市| 长沙县| 灵寿县| 罗定市| 石嘴山市| 曲阜市| 巴马| 七台河市| 巨野县| 隆安县| 师宗县| 乌拉特前旗| 和静县| 家居| 辽中县| 开远市| 黄骅市| 涿鹿县| 仲巴县| 普定县| 大田县| 河北区| 潞西市| 新丰县| 二连浩特市| 德州市| 车险| 台中县| 来安县| 佛学| 颍上县| 石嘴山市| 揭西县| 平湖市| 嵩明县|