0
我有以下代碼:獲取文件使用Chrome應用API
decodeFile = function(theFile, arrayBuffer) {
var song = new FileDecoder().decodeFile(theFile.type, arrayBuffer);
if (song !== null) {
fileList.push(song);
}
},
fileCreated = function(file) {
var reader = new FileReader();
reader.onload = function(e) {
decodeFile(file, e.target.result);
};
reader.readAsArrayBuffer(file);
},
readDirItems = function(items) {
var i, item,
length = items.length;
for(i = 0; i < length; i++) {
item = items[i];
if (item.isFile) {
item.file(fileCreated, errorCallback);
}
}
};
//init
uploadInput.addEventListener("click", function() {
chrome.fileSystem.chooseEntry({type: "openDirectory"}, function(chosenDir) {
var dirReader,
getFilesInDirectory = function() {
dirReader.readEntries(readDirItems, errorCallback);
};
if (chosenDir && chosenDir.isDirectory) {
dirReader = chosenDir.createReader();
getFilesInDirectory();
}
});
});
我怎麼想到這工作是,在readDirItems
我會循環,雖然所有的項目和每個FileEntry的調用file
方法和進入fileCreated
回調。但是,這隻發生在第一個文件中。如果我在fileCreated
斷點,它只輸入一次。任何人都可以解釋我做錯了什麼?
我同意你的代碼更清潔,但是我的問題是,當通過'readEntries'中的文件循環訪問我調用的每個條目(在你的情況下)'entries [i] .file(fileCreated,errorCallback)',第一個文件進入fileCreated方法。 – shortspider
我建議你逐漸地將你的特定功能引入到這個示例中,當它停止時停下來,並找出錯誤。由於google-chrome-app標籤,我遇到了這個問題。我對您的問題的HTML5部分沒有任何特殊的知識。 – sowbug
不知道問題出在哪裏,但是在你稍微移動了一些東西之後,建議代碼似乎可以工作。雖然它有點奇怪,但如果我在上面的'fileCreated'中斷點,它仍然只輸入一次,但是目錄中的所有文件都被讀取。 – shortspider