直接上代码 - 使用前引用maven依赖
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.23.0</version> <!-- 请根据需要使用最新版本 -->
</dependency>
/**
* 解压zip
*/
public static List<MultipartFile> unpackZip(MultipartFile multipartFile){
List<MultipartFile> multipartFileList = new ArrayList<>();
try (ZipArchiveInputStream zipInputStream = new ZipArchiveInputStream(multipartFile.getInputStream())) {
ZipArchiveEntry entry;
while ((entry = zipInputStream.getNextZipEntry()) != null) {
if (!entry.isDirectory()) {
byte[] bytes = IOUtils.toByteArray(zipInputStream);
InputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
String contentType = MediaTypeFactory.getMediaType(entry.getName())
.orElse(org.springframework.http.MediaType.APPLICATION_OCTET_STREAM).toString();
MultipartFile multipartFileObj = new MockMultipartFile(
entry.getName(), entry.getName(), contentType, byteArrayInputStream);
multipartFileList.add(multipartFileObj);
}
}
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("解压文件时出错: " + e.getMessage());
}
return multipartFileList;
}
/**
* multipartFile 文件转 multipartFile
**/
public static File convertToFile(MultipartFile multipartFile) {
try {
File file = new File(multipartFile.getOriginalFilename());
FileOutputStream fos = new FileOutputStream(file);
fos.write(multipartFile.getBytes());
fos.close();
return file;
} catch (Exception e) {
System.out.println("异常:" + e);
}
return null;
}