|
|
@@ -285,46 +285,37 @@ const handleFileChange: UploadProps['onChange'] = (uploadFile, uploadFiles) => {
|
|
|
|
|
|
// =======
|
|
|
// 上传前校验zip内部结构
|
|
|
- console.log(form);
|
|
|
- console.log("即将开始文件检查...");
|
|
|
const file = uploadFile.raw!;
|
|
|
const zip = new JSZip();
|
|
|
let ok = true;
|
|
|
zip.loadAsync(file).then((zip) => {
|
|
|
- console.log("正在检查");
|
|
|
//检查压缩包结构
|
|
|
const zipFileNames = Object.keys(zip.files);
|
|
|
- console.log(zipFileNames);
|
|
|
+ //console.log(zipFileNames);
|
|
|
if ((zipFileNames[0].split('/').filter (s => s).length) === (zipFileNames[1].split('/').filter (s => s).length)) {
|
|
|
ok = false;
|
|
|
}
|
|
|
const firstLevelFolder = zip.folder(zipFileNames[0]);
|
|
|
- //const firstL = zip.folder(zipFileNames[3]);
|
|
|
- //console.log(firstL);
|
|
|
if (!firstLevelFolder) {
|
|
|
ok = false;
|
|
|
}
|
|
|
if (firstLevelFolder) {
|
|
|
- console.log(firstLevelFolder);
|
|
|
const secondLevelFolders = Object.values(firstLevelFolder.files).filter((file) => {
|
|
|
const path = file.name.split('/').filter (s => s);
|
|
|
//首先应该是检查第二级的文件,其次.号开头的文件应该被无视
|
|
|
return file.dir && path.length===2 && (path[path.length-2]+"/" === zipFileNames[0]) && !path[path.length-1].startsWith('.');
|
|
|
});
|
|
|
- console.log(secondLevelFolders);
|
|
|
if (secondLevelFolders.length < 2) {
|
|
|
ok = false;
|
|
|
- console.log("这里有问题");
|
|
|
}
|
|
|
const secondLevelFiles = Object.values(firstLevelFolder.files).filter((file) => {
|
|
|
const path = file.name.split('/').filter (s => s);
|
|
|
- console.log(firstLevelFolder.files);
|
|
|
+ //console.log(firstLevelFolder.files);
|
|
|
return !file.dir && path.length===2 && !path[path.length-1].startsWith('.');
|
|
|
});
|
|
|
- console.log(secondLevelFiles);
|
|
|
+ //console.log(secondLevelFiles);
|
|
|
if (secondLevelFiles.length > 0) {
|
|
|
ok = false;
|
|
|
- console.log("这里有问题")
|
|
|
}
|
|
|
detectFileStructure(zip,'',form.zipStructure);
|
|
|
}
|
|
|
@@ -346,7 +337,7 @@ const handleFileChange: UploadProps['onChange'] = (uploadFile, uploadFiles) => {
|
|
|
form.file.splice(fileIndex, 1)
|
|
|
}
|
|
|
else {
|
|
|
- console.log(form.zipStructure);
|
|
|
+ //console.log(form.zipStructure);
|
|
|
ElMessageBox.alert('上传成功!请填写表单后提交', '通知', {
|
|
|
confirmButtonText: '确定',
|
|
|
type: 'success'
|
|
|
@@ -361,7 +352,7 @@ const handleFileChange: UploadProps['onChange'] = (uploadFile, uploadFiles) => {
|
|
|
|
|
|
//这个函数检查zip并记录zip文件结构
|
|
|
const detectFileStructure = (zip: jszip, root: string, tar: ZipStructure) => {
|
|
|
- console.log("进入递归")
|
|
|
+ //console.log("进入递归")
|
|
|
const folder = zip.folder(root);
|
|
|
let index=0;
|
|
|
if(!folder){
|
|
|
@@ -369,9 +360,9 @@ const detectFileStructure = (zip: jszip, root: string, tar: ZipStructure) => {
|
|
|
return;
|
|
|
}
|
|
|
for(const [fileName, file] of Object.entries(folder.files)){
|
|
|
- console.log(`准备检查文件${fileName},当前的root是${root},当前的tar是${tar.name}`);
|
|
|
+ //console.log(`准备检查文件${fileName},当前的root是${root},当前的tar是${tar.name}`);
|
|
|
if (fileName.startsWith(root)) {
|
|
|
- console.log(`确定${fileName}和${root}相关`)
|
|
|
+ //console.log(`确定${fileName}和${root}相关`)
|
|
|
const path = fileName.substring(root.length).split('/').filter(s => s);
|
|
|
if (path.length === 1 && !path[path.length-1].startsWith('.')) {
|
|
|
if (file.dir) {
|
|
|
@@ -380,9 +371,9 @@ const detectFileStructure = (zip: jszip, root: string, tar: ZipStructure) => {
|
|
|
isDir: true,
|
|
|
sub: []
|
|
|
});
|
|
|
- console.log(`向${tar.name}的sub中新push一个文件夹${fileName},当前的index是${index}`);
|
|
|
+ //console.log(`向${tar.name}的sub中新push一个文件夹${fileName},当前的index是${index}`);
|
|
|
detectFileStructure(zip, fileName,tar.sub[index]);
|
|
|
- console.log(`文件夹${fileName}遍历结束`)
|
|
|
+ //console.log(`文件夹${fileName}遍历结束`)
|
|
|
index++;
|
|
|
} else {
|
|
|
tar.sub.push({
|
|
|
@@ -390,14 +381,14 @@ const detectFileStructure = (zip: jszip, root: string, tar: ZipStructure) => {
|
|
|
isDir: false,
|
|
|
sub: []
|
|
|
})
|
|
|
- console.log(`向${tar.name}的sub中新push一个文件${fileName},当前的index是${index}`);
|
|
|
+ //console.log(`向${tar.name}的sub中新push一个文件${fileName},当前的index是${index}`);
|
|
|
index++;
|
|
|
- console.log(`文件${fileName}遍历结束`)
|
|
|
+ //console.log(`文件${fileName}遍历结束`)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- console.log(form.zipStructure);
|
|
|
+ //console.log(form.zipStructure);
|
|
|
}
|
|
|
|
|
|
|