在 Java 中进行多个 MultipartFile 批量压缩有多种实现方式,下面我将介绍两种常见的方式:使用 Java 内置的 ZipOutputStream 和使用第三方库 Apache Commons Compress。
import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import org.springframework.web.multipart.MultipartFile;
public class ZipUtil {
    public static byte[] compressFilesToZip(MultipartFile[] files) throws IOException {
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        try (ZipOutputStream zipOutputStream = new ZipOutputStream(byteArrayOutputStream)) {
            for (MultipartFile file : files) {
                zipOutputStream.putNextEntry(new ZipEntry(file.getOriginalFilename()));
                zipOutputStream.write(file.getBytes());
                zipOutputStream.closeEntry();
            }
        }
        return byteArrayOutputStream.toByteArray();
    }
}
无需添加额外的依赖,Java 内置的类库。
import java.io.*;
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;
import org.springframework.web.multipart.MultipartFile;
public class ZipUtil {
    public static byte[] compressFilesToZip(MultipartFile[] files) throws IOException {
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        try (ZipArchiveOutputStream zipOutputStream = new ZipArchiveOutputStream(byteArrayOutputStream)) {
            for (MultipartFile file : files) {
                ZipArchiveEntry entry = new ZipArchiveEntry(file.getOriginalFilename());
                zipOutputStream.putArchiveEntry(entry);
                zipOutputStream.write(file.getBytes());
                zipOutputStream.closeArchiveEntry();
            }
        }
        return byteArrayOutputStream.toByteArray();
    }
}
Maven:
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-compress</artifactId>
    <version>1.21</version>
</dependency>
Gradle:
implementation 'org.apache.commons:commons-compress:1.21'
这两种方法都能实现多个 MultipartFile 批量压缩的功能,具体选择哪种方式取决于你的项目需求和偏好。记得根据你的项目架构和版本需求,适当地调整依赖版本。