我正在尝试使用经典 ASP 的服务器端 Javascript 将所有子文件夹递归检索到以字符分隔的字符串“列表”中。这是我应该做的伎俩的功能:
function hasContent(text) {
if (text == undefined) {
return false;
} else if (text === undefined) {
return false;
} else if (text == "undefined") {
return false;
} else if (text === "undefined") {
return false;
} else if (typeof text == "undefined") {
return false;
} else if (text == null) {
return false;
} else if (text === null) {
return false;
} else if (text == "") {
return false;
} else if (text === "") {
return false;
} else {
return true;
}
}
function generateActualPath(path) {
try {
if (!hasContent(path)) {
return "./";
}
if (!/.+[\\/\\\\]$/.test(path)) {
path += "/";
}
if (!/^\\./.test(path)) {
path = "." + path;
}
return path;
} catch (e) {
return "./";
}
}
function retrieveDirectories(dir) {
try {
var actualPath = '/' + dir;
var obj = Server.CreateObject("Scripting.FileSystemObject");
dirs = obj.GetFolder(Server.MapPath(generateActualPath(actualPath)));
for (var enumm = new Enumerator(dirs.subFolders); !enumm.atEnd(); enumm.moveNext()) {
if (/^[a-zA-Z0-9\-_&%#]/.test(enumm.item().Name) && enumm.item().Name.trim().indexOf('_') != 0) {
if (hasContent(Session("directories"))) {
Session("directories") += enumm.item().Name + '|';
} else {
Session("directories") = enumm.item().Name + '|';
}
retrieveDirectories(enumm.item().Name);
}
}
} catch (e) {}
}
但是,尽管进行了递归调用,但我只看到了“dir”的第一级子文件夹,没有更多的东西。我可能在这里缺少什么?我验证了“dir”最多有 4 个子目录的子目录,这些子目录不以“_”开头,并且根据客户要求包含合法的字母数字字符。