上传多个文件,将多个文件压缩,最后上传压缩包到服务器
controller层接口
@PostMapping("/upload")
public R uploadFile(MultipartFile[] files) {
return uploadService.uploadFile(files);
}
serviceimpl业务层
@Override
public R uploadFile(MultipartFile[] files) {
byte[] fileBytes = null;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try (ZipOutputStream zos = new ZipOutputStream(bos)) {
// 创建 ZipEntry 对象, 将所有文件压缩
for (MultipartFile file : files) {
ZipEntry zipEntry = new ZipEntry(Objects.requireNonNull(file.getOriginalFilename()));
zos.putNextEntry(zipEntry);
zos.write(file.getBytes());
zos.closeEntry();
}
} catch (IOException e) {
//
} finally {
//释放资源
}
// 所有文件压缩到一个zip文件后的字节数组
fileBytes = bos.toByteArray();
// todo 将压缩后的文件流数组上传到服务器
...
...
}