Итак, я пытаюсь создать веб-приложение для файловой системы. Прямо сейчас пользователь может перетаскивать файлы на экран, и я могу их читать, включая все файлы в удаленном каталоге. Но я не знаю, когда скрипт закончит чтение файлов.
Некоторый код:
Эта первая функция обрабатывает событие 'drop' и будет перебирать каждый файл и отправлять его другой функции, которая будет читать его содержимое.
function readDrop( evt )
{
for( var i = 0; i < evt.dataTransfer.files.length; i++)
{
var entry = evt.dataTransfer.items[i].webkitGetAsEntry();
if(entry)
readContents(entry, "");
}
//Do stuff after all files and directories have been read.
}
Эта функция является рекурсивным считывателем FileEntry. Если это файл, я буду читать файл FileEntry. Если это каталог, он будет перебирать содержимое и передавать его через эту функцию.
function readContents(entry, path)
{
if( entry.isFile )
{
readFileData( entry, path, function(fileData)
{
_MyFiles.push( fileData );
});
}
else if( entry.isDirectory )
{
var directoryReader = entry.createReader();
var path = path + entry.name;
directoryReader.readEntries(function(results)
{
for( var j = 0; j < results.length; j++ )
{
readContents(entry, path);
}
}, errorHandler)
}
}
А вот моя функция для чтения файлов. Обратный вызов просто помещает объект fileData в глобальный массив.
function readFileData(entry, path, callback)
{
var fileData = {"name": entry.name, "size": 0, "path": path, "file": entry};
entry.file(function(file)
{
fileData["size"] = file.size;
callback( fileData );
}
}
Я не уверен, куда идти отсюда, чтобы у меня был обратный вызов, когда все файлы и каталоги были прочитаны.
//read the file
— покажите нам этот код, и мы сможем вам помочь. - person Martin Jespersen   schedule 15.09.2013