【发布时间】:2018-10-26 07:05:43
【问题描述】:
我在 aws S3 存储桶中有几个目录。我需要将相同的结构加载到 jsTree(jquery 插件)。
我遇到的问题是如何将每个元素的父节点标识为 aws S3 (listObjectsV2) 将每个元素标识为单独的对象而不是目录。
这是它返回的示例
{ Key: 'private/Nifla/2)-M1-Kinematics-of-a-Particle-moving-in-a-Straight-Line-Questions.docx',
0|server | LastModified: 2018-09-04T06:24:18.000Z,
0|server | ETag: '"c3dbdb890c19ce5e289227e96a702dc8"',
0|server | Size: 1230564,
0|server | StorageClass: 'STANDARD' },
0|server | { Key: 'private/Nifla/2)-M1-Kinematics-of-a-Particle-moving-in-a-Straight-Line.pptx',
0|server | LastModified: 2018-09-04T06:16:45.000Z,
0|server | ETag: '"84aaa52152fcbc36768fca819e1bf84d"',
0|server | Size: 1166244,
0|server | StorageClass: 'STANDARD' },
0|server | { Key: 'private/Nifla/3)-M1-Dynamics-of-a-Particle-moving-in-a-Straight-Line-Questions.docx',
0|server | LastModified: 2018-09-04T06:29:21.000Z,
0|server | ETag: '"5d078bebd1edc40e5db9ff5f489df610"',
0|server | Size: 2247048,
0|server | StorageClass: 'STANDARD' },
0|server | { Key: 'private/Nifla/3)-M1-Dynamics-of-a-Particle-moving-in-a-Straight-Line.pptx',
0|server | LastModified: 2018-09-04T06:15:49.000Z,
0|server | ETag: '"d27ff757a5c6bf05d9e02ec80529dfad"',
0|server | Size: 1557098,
0|server | StorageClass: 'STANDARD' },
0|server | { Key: 'private/Nifla/6)-M1-Vectors-Questions.docx',
0|server | LastModified: 2018-07-24T05:44:39.000Z,
0|server | ETag: '"1e146a050cc4d4a8fd8919bb4fc0f151"',
0|server | Size: 2570995,
0|server | StorageClass: 'STANDARD' }
尽管所有这些文件都在“private/Nifla”目录下,但它们对于 S3 来说是独立的对象。
这是我尝试调整结构以适应 jsTree 的方式。
function s3ToJsTreeJsonConvertor(s3ObjectList){
var data = []
var files = s3ObjectList.Contents;
console.log('----files-----');
console.log(files);
for (var i = 0; i < files.length; i++) {
var Key = files[i].Key
var filterRegex = new RegExp('(.pdf)');
var isFolder = filterRegex.test(Key);
if(!isFolder){
continue;
}
console.log("///////////////",Key);
var res = Key.split("/");
console.log(">>>>>>>>>>>>>>>",res);
for (var j=0;j< res.length;j++){
var isFile = false;
if(j===res.length-1){
isFile = true;
}
if(j===0){
data.push({ "id" : "node_"+i+"_"+j, "parent" : "#", "text" : res[j],"data":{"key":Key,"isFile":isFile } });
continue;
}
data.push({ "id" : "node_"+i+"_"+j, "parent" : "node_"+i+"_"+(j-1), "text" : res[j],"data":{"key":Key,"isFile":isFile } });
}
}
return data;
}
这会产生以下结构。
问题是如何识别每个文件的父目录。任何人都可以提出解决方案吗? 谢谢
【问题讨论】:
标签: javascript jquery amazon-web-services amazon-s3 jstree