添加Jar包
<!-- zip文件解壓 -->
<dependency>
<groupId>net.lingala.zip4j</groupId>
<artifactId>zip4j</artifactId>
<version>1.3.1</version>
</dependency>
<!-- zip文件解壓 -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
代碼實現
public void doZipFile(MultipartFile file) {
if(file != null) {
// 上傳文件的路徑
long time = TimeTools.get0TimeZone();
String uploadFolder = GlobalVar.UPLOAD_PREFIX + UploadTypeEnum.getDir(2) + "/" + time + "/";
String fileName = file.getOriginalFilename();
String extension = fileName.substring(fileName.lastIndexOf("."));
fileName = UUID.randomUUID() + extension;
File dest = new File(uploadFolder + fileName);
// 檢測文件目錄是否存在 不存在則創建
if (!dest.getParentFile().exists()) {
dest.getParentFile().mkdirs();
}
try {
file.transferTo(dest);
} catch (IOException e) {
e.printStackTrace();
throw new CheckException("文件上傳失敗");
}
ZipFile zipFile = null;
try {
zipFile = new ZipFile(dest);
zipFile.setFileNameCharset("utf-8");
zipFile.extractAll(uploadFolder);
Collection<File> files = FileUtils.listFiles(dest.getParentFile(),
GlobalVar.IMG_SUFFIX.toArray(new String[0]), true);
files.stream().forEach(e -> {
if(!e.getName().startsWith(".")) {
VirtualImg virtualImg = new VirtualImg();
virtualImg.setHeadImg("/uploads/" + UploadTypeEnum.getDir(2) + "/" + time + "/" + e.getName());
this.save(virtualImg);
}
});
} catch (ZipException e) {
e.printStackTrace();
}
}
}