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