根据 AWS S3 获取 bucket 下的 所有文件:
返回格式如下:
var arr = [
"root",
"root/a",
"root/a/new_b.png",
"root/a/qa",
"root/a/qa/新建文本文档 (3).txt",
"root/asdfasdfasdfasdfasdfasdfasdf.txt",
"root/b",
"root/instqj_gfzqhk.exe",
"root/jupyter_notebook.png",
"root/new_b.png",
"root/output",
"root/output/new_b.png",
"root/soffice.exe",
"root/ti",
"root/ti/asdfasdfasdfasdfasdfasdfasdf.txt",
"root/watermark.zip",
"root/123.pdf",
"root/新建文本文档 (3).txt",
"root/新建文本文档.txt",
"root/沧海一声笑.docx",
"root/理光C2011SP.exe",
"root123",
"root123/qwe"
];
const pathToTree = input => {
var output = [];
for (var i = 0; i < input.length; i++) {
var chain = input[i].split("/");
var currentNode = output;
for (var j = 0; j < chain.length; j++) {
if (chain[j] === "") {
break;
}
var wantedNode = chain[j];
var lastNode = currentNode;
for (var k = 0; k < currentNode.length; k++) {
if (currentNode[k].title == wantedNode) {
currentNode = currentNode[k].children;
break;
}
}
/*
if (wantedNode.indexOf(".") == -1) {}
判断 是否显示 文件夹,
如果 不加 判断 显示 所有文件(文件夹+.文件)
*/
if (wantedNode.indexOf(".") == -1) {
if (lastNode == currentNode) {
var newNode = (currentNode[k] = {
key: input[i],
title: wantedNode,
children: []
});
currentNode = newNode.children;
} else {
delete currentNode.children;
}
}
}
}
return output;
};
console.log(pathToTree(arr));
通过如上方法 转化为 如下数据结构,用于Tree展示:
参考链接:https://www.cnblogs.com/liaozhenting/p/8343827.html