feat: ASW-26 pcap download 接口开发
This commit is contained in:
@@ -1,19 +1,23 @@
|
||||
package net.geedge.asw.module.runner.controller;
|
||||
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.log.Log;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import net.geedge.asw.common.util.R;
|
||||
import net.geedge.asw.common.util.RCode;
|
||||
import net.geedge.asw.common.util.T;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import net.geedge.asw.common.util.*;
|
||||
import net.geedge.asw.module.runner.entity.PcapEntity;
|
||||
import net.geedge.asw.module.runner.service.IPcapService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -101,4 +105,24 @@ public class PcapController {
|
||||
pcapService.parse2session(ids);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("/download")
|
||||
public void download(HttpServletResponse response, String ids) throws IOException {
|
||||
T.VerifyUtil.is(ids).notEmpty();
|
||||
List<String> pcapIdList = Arrays.asList(ids.split(","));
|
||||
List<PcapEntity> pcapList = pcapService.listByIds(pcapIdList);
|
||||
if (T.CollectionUtil.isNotEmpty(pcapList) && pcapList.size() == 1) {
|
||||
PcapEntity first = pcapList.getFirst();
|
||||
File pcapFile = T.FileUtil.file(first.getPath());
|
||||
ResponseUtil.downloadFile(response, MediaType.APPLICATION_OCTET_STREAM_VALUE, first.getName(), T.FileUtil.readBytes(pcapFile));
|
||||
}
|
||||
if (pcapList.size() > 1) {
|
||||
File zipFile = T.FileUtil.file(T.StrUtil.concat(true, Constants.TEMP_PATH, "/", "pcap-", DateUtil.format(DateUtil.date(), DatePattern.PURE_DATETIME_PATTERN) + ".zip"));
|
||||
List<File> fileList = pcapList.stream().map(x -> T.FileUtil.file(x.getPath())).toList();
|
||||
T.ZipUtil.zip(zipFile, false, fileList.toArray(new File[0]));
|
||||
ResponseUtil.downloadFile(response, zipFile.getName(), T.FileUtil.readBytes(zipFile));
|
||||
T.FileUtil.del(zipFile);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user