Java OSS批量下載并壓縮為ZIP代碼實(shí)例
這篇文章主要介紹了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í)有所幫助,也希望大家多多支持腳本之家。
- Java實(shí)現(xiàn)批量下載(打包成zip)的實(shí)現(xiàn)
- java實(shí)現(xiàn)批量下載 多文件打包成zip格式下載
- java后臺批量下載文件并壓縮成zip下載的方法
- JAVA SFTP文件上傳、下載及批量下載實(shí)例
- javaweb文件打包批量下載代碼
- Java實(shí)現(xiàn)文件壓縮為zip和解壓zip壓縮包
- Java實(shí)現(xiàn)創(chuàng)建Zip壓縮包并寫入文件
- Java實(shí)現(xiàn)導(dǎo)出ZIP壓縮包的方法
- Java后臺實(shí)現(xiàn)瀏覽器一鍵導(dǎo)出下載zip壓縮包
- java批量下載生成zip壓縮包的思路詳解
相關(guān)文章
mybatis映射內(nèi)部類的使用及注意事項(xiàng)說明
這篇文章主要介紹了mybatis映射內(nèi)部類的使用及注意事項(xiàng)說明,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12Java 在volatile內(nèi)部調(diào)用接口的方法
在Java中,volatile?關(guān)鍵字通常用于確保變量的可見性和有序性,而不是用來修飾接口或方法調(diào)用的,這篇文章主要介紹了Java 在volatile內(nèi)部調(diào)用接口的方法,需要的朋友可以參考下2024-07-07Java客戶端服務(wù)端上傳接收文件實(shí)現(xiàn)詳解
這篇文章主要介紹了Java客戶端服務(wù)端上傳接收文件實(shí)現(xiàn)詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07SpringBoot3集成SLF4J+logback進(jìn)行日志記錄的實(shí)現(xiàn)
本文主要介紹了SpringBoot3集成SLF4J+logback進(jìn)行日志記錄的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01java 將jsonarray 轉(zhuǎn)化為對應(yīng)鍵值的jsonobject方法
下面小編就為大家分享一篇java 將jsonarray 轉(zhuǎn)化為對應(yīng)鍵值的jsonobject方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-03-03MyBatis環(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ā)其他注解失效的解決,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-03-03