【问题标题】:Load data from aws S3 to jstree将数据从 aws S3 加载到 jstree
【发布时间】: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


    【解决方案1】:

    您可以在 listObjectsV2 中配置前缀字符串,以便它返回以前缀字符串开头的对象。假设您有类似 /bucketName/folder1/file1.txt 的内容,如果您将前缀配置为 folder1 ,它将返回文件夹 1 内的所有对象,包括文件夹 1。 https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#listObjectsV2-property

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-13
      • 1970-01-01
      相关资源
      最近更新 更多