|
package org.springblade.mdm.test;
|
|
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Parameter;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
import lombok.AllArgsConstructor;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springblade.core.oss.OssTemplate;
|
import org.springblade.core.tenant.annotation.NonDS;
|
import org.springblade.core.tool.api.R;
|
import org.springblade.core.tool.utils.FileUtil;
|
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import java.io.*;
|
import java.net.URI;
|
import java.nio.file.*;
|
import java.util.*;
|
import java.util.zip.ZipEntry;
|
import java.util.zip.ZipFile;
|
import java.util.zip.ZipInputStream;
|
|
/**
|
* 流程管理接口
|
*
|
* @author Chill
|
*/
|
@NonDS
|
@RestController
|
@RequestMapping("/test/")
|
@AllArgsConstructor
|
@Tag(name = "MDM系统接口", description = "引入blade-system的接口")
|
@Slf4j
|
public class OssTestController {
|
private final OssTemplate ossTemplate;
|
@GetMapping("/readzip")
|
@ApiOperationSupport(order = 2)
|
@Operation(summary = "读zip")
|
public R<String> readzip(@Parameter(description = "机构父节点id") Long deptId) throws IOException {
|
R<String> r = R.data("");
|
InputStream inputStream = new FileInputStream("d:/spd.zip");
|
byte[] zipData = FileUtil.copyToByteArray(inputStream);
|
Path tempFile = Files.createTempFile("tempzip", ".zip");
|
// 写入字节数据到临时文件
|
Files.write(tempFile, zipData, StandardOpenOption.WRITE);
|
|
Map<String, String> env = new HashMap<>();
|
env.put("create", "true");
|
URI uri = URI.create("jar:file:/inmemory.zip");
|
List<String> entryNameList = new ArrayList<>();
|
String entryn = "CP1-13-1/CP1-13-1-1-1-1.txt";
|
try (ZipFile zipFile = new ZipFile(tempFile.toFile())) {
|
Enumeration<? extends ZipEntry> entris = zipFile.entries();
|
ZipEntry entry;
|
while(entris.hasMoreElements()) {
|
entry = entris.nextElement();
|
entryNameList.add(entry.getName());
|
}
|
//便利完成直接取树
|
entry = zipFile.getEntry(entryn);
|
InputStream ins = zipFile.getInputStream(entry);
|
Path outputPath = Paths.get("d:/downtest.txt");
|
Files.copy(ins, outputPath, StandardCopyOption.REPLACE_EXISTING);
|
}
|
|
System.out.println(entryNameList);
|
|
/*
|
try (ZipFile zipFile = new ZipFile(tempFile.toFile())) {
|
ZipEntry entry = zipFile.getEntry(entryn);
|
InputStream ins = zipFile.getInputStream(entry);
|
|
Path outputPath = Paths.get("d:/downtest.txt");
|
Files.copy(ins, outputPath, StandardCopyOption.REPLACE_EXISTING);
|
}
|
|
List<String> entryNameList = new ArrayList<>();
|
try (SeekableInMemoryByteChannel channel = new SeekableInMemoryByteChannel(bytes);
|
ZipFile zipFile = new ZipFile(channel)) {
|
|
ZipArchiveEntry entry;
|
Enumeration<ZipArchiveEntry> entries = zipFile.getEntries();
|
String entryn = "CP1-13-1/CP1-13-1-1-1-1.txt";
|
while (entries.hasMoreElements()) {
|
entry = entries.nextElement();
|
entryNameList.add(entry.getName());
|
}
|
}*/
|
/*
|
try (SeekableInMemoryByteChannel channel = new SeekableInMemoryByteChannel(bytes);
|
ZipFile zipFile = new ZipFile(channel)) {
|
List<String> dirList = entryNameList.stream().filter(s -> s.endsWith("/")).toList();
|
for(String dir : dirList) {
|
entryNameList.stream().filter(s -> s.startsWith(dir)).forEach(entryName -> {
|
ZipArchiveEntry fileEntry = zipFile.getEntry(entryName);
|
//ZipArchiveEntry fileEntry = entryMap.get(entryName);
|
String fileName = StringUtils.removeStart(entryName,dir);//去除文件名路径部分
|
try {
|
InputStream ins = zipFile.getInputStream(fileEntry);
|
ByteArrayInputStream byteS = new ByteArrayInputStream(ins.readAllBytes());
|
|
Path outputPath = Paths.get("d:/downtest.txt");
|
Files.copy(byteS, outputPath, StandardCopyOption.REPLACE_EXISTING);
|
byteS.reset();
|
|
BladeFile newOssFile = ossTemplate.putFile("mdm", fileName, byteS);
|
r.setData(newOssFile.getName());
|
System.out.println(newOssFile.getName());
|
} catch (IOException e) {
|
throw new RuntimeException(e);
|
}
|
});
|
}
|
}*/
|
return r;
|
}
|
|
}
|