2014-10-16 69 views
1

我有一個循環列出目錄中的文件。它在第一級工作正常。FileSystem API - 從目錄拖放中遞歸列出文件

Folder/1.jpg 
Folder/2.jpg 

但是,如果我有主文件夾中的文件夾...

Folder/nestedFolder/ 

的執行console.log吐出

nestedFolder/1.jpg 

但我想它登錄

Folder/nestedFolder/1.jpg 

這裏是我的方法

function traverseFileTree(item,path){ 
    path = path || ""; 
    if (item.isFile){ 
    console.log(path + item.name); 
    } else if (item.isDirectory){ 
    var directoryPath = item.name 
    var dirReader = item.createReader(); 
    dirReader.readEntries(function(entries){ 
     for (var i=0; i < entries.length; i++){ 
     traverseFileTree(entries[i], directoryPath + "/") 
     } 
    }); 
    } 
} 

而這正是目錄在

function handleDrop(e) { 
    var items = e.dataTransfer.items; 
    var length = items.length; 
    for (var i = 0; i < length; i++) { 
    var item = items[i].webkitGetAsEntry(); 
    if(item){ 
     traverseFileTree(item); 
    } 
    } 
}; 
+0

你如何傳遞參數? – 2014-10-16 19:10:53

+1

難道你不能將'item.name'附加到現有的'directoryPath'而不是替換值嗎?然後你將保留整個路徑,而不僅僅是當前目錄。即'var directoryPath + = item.name' – aarosil 2014-10-16 19:12:03

+0

@MohammadAreebSiddiqui看到我的編輯 – AllTheTime 2014-10-16 19:16:19

回答

-1

傳遞就不得不改變

var directoryPath = item.name 

var directoryPath = path + item.name