69 lines
3.1 KiB
Java
69 lines
3.1 KiB
Java
package cd.casic.server;
|
|
|
|
import cd.casic.ci.process.properties.TargetFileUploadProperties;
|
|
import cd.casic.ci.process.util.CryptogramUtil;
|
|
import cd.casic.ci.process.util.SftpUploadUtil;
|
|
import com.jcraft.jsch.*;
|
|
import jakarta.annotation.Resource;
|
|
import jodd.io.IOUtil;
|
|
import org.apache.commons.io.IOUtils;
|
|
import org.junit.jupiter.api.Test;
|
|
import org.springframework.boot.test.context.SpringBootTest;
|
|
import org.springframework.test.context.ActiveProfiles;
|
|
|
|
import java.io.*;
|
|
import java.util.Properties;
|
|
import java.util.zip.ZipEntry;
|
|
import java.util.zip.ZipOutputStream;
|
|
|
|
@SpringBootTest(classes = {OpsServerApplication.class})
|
|
@ActiveProfiles("local")
|
|
public class ZipFileTest {
|
|
@Resource
|
|
TargetFileUploadProperties properties;
|
|
String[] testFilePath = new String[]{
|
|
"/home/ops/ops-pro/file/af4b1435-8fb0-453d-acef-eaec75c67dd8/QQ图片20250623102626.png",
|
|
"/home/ops/ops-pro/file/7ffb5bb7-9ea2-4d8b-9e0e-b6c3f99107b5/新建 文本文档.txt",
|
|
"/home/ops/ops-pro/file/2622340c-20db-48fc-bca2-d867da3149aa/.nodemid",
|
|
"/home/ops/ops-pro/file/f601e6d7-050f-4c92-a353-e1db64e048e1/1 (2).txt",
|
|
"/home/ops/ops-pro/file/9bf7c208-0576-4408-833e-e0d7eecc5a8a/office账户.txt",
|
|
"/home/ops/ops-pro/file/332143a2-52da-4e29-8a3d-78071d4e3559/office账户.txt",
|
|
"/home/ops/ops-pro/file/bbf03a24-5a48-4863-b1b9-c52bb00a8b0f/office账户.txt",
|
|
"/home/ops/ops-pro/file/6ae5f778-e12c-48f2-bce1-8748e2435e26/脚本.txt",
|
|
"/home/ops/ops-pro/file/47c98d3b-553a-4934-b4c4-f9b185eac04a/1.txt",
|
|
"/home/ops/ops-pro/file/cafb8135-f1d1-42db-bb02-1444cda937fd/ximenzi.txt",
|
|
"/home/ops/ops-pro/file/0e78423d-b4b6-4442-b225-e66309515d42/office账户.txt",
|
|
"/home/ops/ops-pro/file/40831b9c-eb35-4eb9-973a-f087b48105e6/office账户.txt"
|
|
};
|
|
@Test
|
|
public void testZip() throws JSchException, SftpException {
|
|
JSch jsch = new JSch();
|
|
Session session = jsch.getSession(properties.getUsername(), properties.getRemoteHost(), properties.getRemotePort());
|
|
session.setPassword(properties.getPassword());
|
|
|
|
// 跳过 host key 检查
|
|
Properties config = new Properties();
|
|
config.put("StrictHostKeyChecking", "no");
|
|
session.setConfig(config);
|
|
|
|
session.connect();
|
|
ChannelSftp sftp = (ChannelSftp) session.openChannel("sftp");
|
|
sftp.connect();
|
|
ByteArrayOutputStream bos = new ByteArrayOutputStream();
|
|
for (String path : testFilePath) {
|
|
InputStream inputStream = sftp.get(path);
|
|
String fileName = path.substring(path.lastIndexOf("/"));
|
|
try (ZipOutputStream zipOutputStream = new ZipOutputStream(bos)){
|
|
ZipEntry zipEntry = new ZipEntry(fileName);
|
|
zipOutputStream.putNextEntry(zipEntry);
|
|
IOUtils.copy(inputStream,zipOutputStream);
|
|
zipOutputStream.closeEntry();
|
|
inputStream.close();
|
|
} catch (Exception e) {
|
|
throw new RuntimeException(e);
|
|
}
|
|
}
|
|
System.out.println(bos.size());
|
|
}
|
|
}
|