91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

Java中怎么利用OSS批量下載并壓縮為ZIP

發布時間:2021-06-11 15:56:09 來源:億速云 閱讀:1399 作者:Leah 欄目:編程語言

這篇文章將為大家詳細講解有關Java中怎么利用OSS批量下載并壓縮為ZIP,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

/**
   * 批量下載為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 ){
    // 創建臨時文件
    File zipFile = null;
    try {<br data-filtered="filtered">        //臨時文件名稱
      zipFile = File.createTempFile("test", ".zip");
 
      FileOutputStream f = new FileOutputStream(zipFile);
      /**
       * 作用是為任何OutputStream產生校驗和
       * 第一個參數是制定產生校驗和的輸出流,第二個參數是指定Checksum的類型 (Adler32(較快)和CRC32兩種)
       */
      CheckedOutputStream csum = new CheckedOutputStream(f, new Adler32());
      // 用于將數據壓縮成Zip文件格式
      ZipOutputStream zos = new ZipOutputStream(csum);
      OSSClient ossClient= OSSUtil.getInstance();
      for (String ossFile : keyList) {
        // 獲取Object,返回結果為OSSObject對象
 
        OSSObject ossObject = ossClient.getObject(OSSUtil.BUCKET, ossFile);
        // 讀去Object內容 返回
        InputStream inputStream = ossObject.getObjectContent();
        // 對于每一個要被存放到壓縮包的文件,都必須調用ZipOutputStream對象的putNextEntry()方法,確保壓縮包里面文件不同名
        String name=ossFile.substring(ossFile.lastIndexOf("/")+1);
        zos.putNextEntry(new ZipEntry(name));
        int bytesRead = 0;
        // 向壓縮文件中輸出數據
        while ((bytesRead = inputStream.read()) != -1) {
          zos.write(bytesRead);
        }
        inputStream.close();
        zos.closeEntry(); // 當前文件寫完,定位為寫入下一條項目
      }
      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);
      }
      // 關閉流
      fis.close();
      buff.close();
      out.close();
      ossClient.shutdown();
      // 刪除臨時文件
      zipFile.delete();
    } catch (IOException e1) {
      e1.printStackTrace();
    }catch (Exception e) {
      e.printStackTrace();
    }
  }

關于Java中怎么利用OSS批量下載并壓縮為ZIP就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

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

AI

长春市| 丰顺县| 中西区| 兴文县| 内江市| 高清| 原阳县| 上饶县| 黎城县| 台湾省| 孟州市| 买车| 即墨市| 崇信县| 黄石市| 堆龙德庆县| 乐平市| 尼木县| 海兴县| 福泉市| 阿克陶县| 阿城市| 三门峡市| 宁远县| 文昌市| 电白县| 阳新县| 栖霞市| 丹东市| 杭锦旗| 共和县| 凯里市| 永兴县| 饶阳县| 通江县| 广昌县| 延庆县| 台山市| 乌兰浩特市| 拜城县| 金湖县|