Java OSS批量下載并壓縮為ZIP代碼實(shí)例
這篇文章主要介紹了Java OSS批量下載并壓縮為ZIP代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
/**
* 批量下載為zip
* @param req
* @param response
* @param keyList oss文件路徑集合
* @param fileName 下載出來(lái)的zip文件名(一般以合同名命名) 如:測(cè)試合同,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í)文件名稱(chēng)
zipFile = File.createTempFile("test", ".zip");
FileOutputStream f = new FileOutputStream(zipFile);
/**
* 作用是為任何OutputStream產(chǎn)生校驗(yàn)和
* 第一個(gè)參數(shù)是制定產(chǎn)生校驗(yàn)和的輸出流,第二個(gè)參數(shù)是指定Checksum的類(lèi)型 (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對(duì)象
OSSObject ossObject = ossClient.getObject(OSSUtil.BUCKET, ossFile);
// 讀去Object內(nèi)容 返回
InputStream inputStream = ossObject.getObjectContent();
// 對(duì)于每一個(gè)要被存放到壓縮包的文件,都必須調(diào)用ZipOutputStream對(duì)象的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ě)完,定位為寫(xiě)入下一條項(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下載文件名空格變+號(hào)問(wèn)題
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();
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Java實(shí)現(xiàn)批量下載(打包成zip)的實(shí)現(xiàn)
- java實(shí)現(xiàn)批量下載 多文件打包成zip格式下載
- java后臺(tái)批量下載文件并壓縮成zip下載的方法
- JAVA SFTP文件上傳、下載及批量下載實(shí)例
- javaweb文件打包批量下載代碼
- Java實(shí)現(xiàn)文件壓縮為zip和解壓zip壓縮包
- Java實(shí)現(xiàn)創(chuàng)建Zip壓縮包并寫(xiě)入文件
- Java實(shí)現(xiàn)導(dǎo)出ZIP壓縮包的方法
- Java后臺(tái)實(shí)現(xiàn)瀏覽器一鍵導(dǎo)出下載zip壓縮包
- java批量下載生成zip壓縮包的思路詳解
相關(guān)文章
Spring不能注入Static變量的原因及Spring注入靜態(tài)變量
這篇文章主要介紹了Spring不能注入Static變量的原因及Spring注入靜態(tài)變量,需要的朋友可以參考下2016-01-01
SpringBoot整合redis中的JSON序列化文件夾操作小結(jié)
在我們?nèi)粘5捻?xiàng)目開(kāi)發(fā)中,使用redis作為緩存,來(lái)提高系統(tǒng)訪(fǎng)問(wèn)速度和緩解系統(tǒng)壓力,在使用中遇到幾個(gè)問(wèn)題,本文給大家詳細(xì)總結(jié)下,對(duì)SpringBoot整合redis?JSON序列化相關(guān)知識(shí)感興趣的朋友一起看看吧2022-02-02
java設(shè)計(jì)日歷可視化的詳細(xì)步驟記錄
這篇文章主要給大家介紹了關(guān)于java設(shè)計(jì)日歷可視化的相關(guān)資料,通過(guò)自定義的CircleLabel類(lèi)來(lái)突出顯示今天的日期,并使用BorderLayout布局管理窗口組件,文章詳細(xì)描述了各個(gè)類(lèi)和方法的設(shè)計(jì)思想和實(shí)現(xiàn)邏輯,需要的朋友可以參考下2024-12-12
Java實(shí)現(xiàn)的可選擇及拖拽圖片的面板功能【基于swing組件】
這篇文章主要介紹了Java實(shí)現(xiàn)的可選擇及拖拽圖片的面板功能,涉及java基于swing組件選擇與操作圖片元素的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-01-01
pagehelper踩坑記之分頁(yè)亂套問(wèn)題解決
這篇文章主要為大家介紹了pagehelper踩坑記之分頁(yè)亂套問(wèn)題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
打開(kāi)IDEA配置Spring項(xiàng)目時(shí)發(fā)現(xiàn)沒(méi)有選擇java?1.8的選項(xiàng)解決方案
這篇文章主要介紹了打開(kāi)IDEA配置Spring項(xiàng)目時(shí)發(fā)現(xiàn)沒(méi)有選擇java?1.8的選項(xiàng)的解決方案,文中通過(guò)代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者idea具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2025-03-03
Java實(shí)時(shí)監(jiān)控日志文件并輸出的方法詳解
這篇文章主要給大家介紹了關(guān)于Java實(shí)時(shí)監(jiān)控日志文件并輸出的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編一起來(lái)學(xué)習(xí)學(xué)習(xí)吧。2017-06-06

