欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java OSS批量下載并壓縮為ZIP代碼實(shí)例

 更新時(shí)間:2019年09月10日 14:57:23   作者:呵呵噠小碼農(nóng)  
這篇文章主要介紹了Java OSS批量下載并壓縮為ZIP代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

這篇文章主要介紹了Java OSS批量下載并壓縮為ZIP代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

/**
   * 批量下載為zip
   * @param req
   * @param response
   * @param keyList oss文件路徑集合
   * @param fileName 下載出來的zip文件名(一般以合同名命名) 如:測試合同,zip
   */
  public static void downForZip(HttpServletRequest req, HttpServletResponse response,
                  List<String> keyList,String fileName ){
    // 創(chuàng)建臨時(shí)文件
    File zipFile = null;
    try {<br data-filtered="filtered">        //臨時(shí)文件名稱
      zipFile = File.createTempFile("test", ".zip");
 
      FileOutputStream f = new FileOutputStream(zipFile);
      /**
       * 作用是為任何OutputStream產(chǎn)生校驗(yàn)和
       * 第一個(gè)參數(shù)是制定產(chǎn)生校驗(yàn)和的輸出流,第二個(gè)參數(shù)是指定Checksum的類型 (Adler32(較快)和CRC32兩種)
       */
      CheckedOutputStream csum = new CheckedOutputStream(f, new Adler32());
      // 用于將數(shù)據(jù)壓縮成Zip文件格式
      ZipOutputStream zos = new ZipOutputStream(csum);
      OSSClient ossClient= OSSUtil.getInstance();
      for (String ossFile : keyList) {
        // 獲取Object,返回結(jié)果為OSSObject對象
 
        OSSObject ossObject = ossClient.getObject(OSSUtil.BUCKET, ossFile);
        // 讀去Object內(nèi)容 返回
        InputStream inputStream = ossObject.getObjectContent();
        // 對于每一個(gè)要被存放到壓縮包的文件,都必須調(diào)用ZipOutputStream對象的putNextEntry()方法,確保壓縮包里面文件不同名
        String name=ossFile.substring(ossFile.lastIndexOf("/")+1);
        zos.putNextEntry(new ZipEntry(name));
        int bytesRead = 0;
        // 向壓縮文件中輸出數(shù)據(jù)
        while ((bytesRead = inputStream.read()) != -1) {
          zos.write(bytesRead);
        }
        inputStream.close();
        zos.closeEntry(); // 當(dāng)前文件寫完,定位為寫入下一條項(xiàng)目
      }
      zos.close();
      String header = req.getHeader("User-Agent").toUpperCase();
      if (header.contains("MSIE") || header.contains("TRIDENT") || header.contains("EDGE")) {
        fileName = URLEncoder.encode(fileName, "utf-8");
        //IE下載文件名空格變+號問題
        fileName = fileName.replace("+", "%20");
      } else {
        fileName = new String(fileName.getBytes(), "ISO8859-1");
      }
      response.reset();
      response.setContentType("text/plain");
      response.setContentType("application/octet-stream; charset=utf-8");
      response.setHeader("Location", fileName);
      response.setHeader("Cache-Control", "max-age=0");
      response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
 
      FileInputStream fis = new FileInputStream(zipFile);
      BufferedInputStream buff = new BufferedInputStream(fis);
      BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
      byte[] car = new byte[1024];
      int l = 0;
      while (l < zipFile.length()) {
        int j = buff.read(car, 0, 1024);
        l += j;
        out.write(car, 0, j);
      }
      // 關(guān)閉流
      fis.close();
      buff.close();
      out.close();
      ossClient.shutdown();
      // 刪除臨時(shí)文件
      zipFile.delete();
    } catch (IOException e1) {
      e1.printStackTrace();
    }catch (Exception e) {
      e.printStackTrace();
    }
  }

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • mybatis映射內(nèi)部類的使用及注意事項(xiàng)說明

    mybatis映射內(nèi)部類的使用及注意事項(xiàng)說明

    這篇文章主要介紹了mybatis映射內(nèi)部類的使用及注意事項(xiàng)說明,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Java 在volatile內(nèi)部調(diào)用接口的方法

    Java 在volatile內(nèi)部調(diào)用接口的方法

    在Java中,volatile?關(guān)鍵字通常用于確保變量的可見性和有序性,而不是用來修飾接口或方法調(diào)用的,這篇文章主要介紹了Java 在volatile內(nèi)部調(diào)用接口的方法,需要的朋友可以參考下
    2024-07-07
  • 簡單分析java中CMS回收器

    簡單分析java中CMS回收器

    在本篇文章里我們給大家分享了關(guān)于java中CMS回收器的相關(guān)知識點(diǎn)內(nèi)容,有需要的朋友們可以跟著學(xué)習(xí)下。
    2018-10-10
  • mybatis批量更新與插入方式

    mybatis批量更新與插入方式

    這篇文章主要介紹了mybatis批量更新與插入方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Java實(shí)現(xiàn)FTP文件上傳

    Java實(shí)現(xiàn)FTP文件上傳

    FTP 是File Transfer Protocol(文件傳輸協(xié)議)的英文簡稱,而中文簡稱為“文傳協(xié)議”。用于Internet上的控制文件的雙向傳輸。本文將講解如何用Java實(shí)現(xiàn)FTP文件上傳
    2021-05-05
  • Java客戶端服務(wù)端上傳接收文件實(shí)現(xiàn)詳解

    Java客戶端服務(wù)端上傳接收文件實(shí)現(xiàn)詳解

    這篇文章主要介紹了Java客戶端服務(wù)端上傳接收文件實(shí)現(xiàn)詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • SpringBoot3集成SLF4J+logback進(jìn)行日志記錄的實(shí)現(xiàn)

    SpringBoot3集成SLF4J+logback進(jìn)行日志記錄的實(shí)現(xiàn)

    本文主要介紹了SpringBoot3集成SLF4J+logback進(jìn)行日志記錄的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • java 將jsonarray 轉(zhuǎn)化為對應(yīng)鍵值的jsonobject方法

    java 將jsonarray 轉(zhuǎn)化為對應(yīng)鍵值的jsonobject方法

    下面小編就為大家分享一篇java 將jsonarray 轉(zhuǎn)化為對應(yīng)鍵值的jsonobject方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • MyBatis環(huán)境資源配置實(shí)現(xiàn)代碼詳解

    MyBatis環(huán)境資源配置實(shí)現(xiàn)代碼詳解

    這篇文章主要介紹了MyBatis環(huán)境資源配置實(shí)現(xiàn)代碼解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • 關(guān)于Spring注解@Async引發(fā)其他注解失效的解決

    關(guān)于Spring注解@Async引發(fā)其他注解失效的解決

    這篇文章主要介紹了關(guān)于Spring注解@Async引發(fā)其他注解失效的解決,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-03-03

最新評論