Я использую Phonegap, чтобы загрузить архив, разархивировать его, а затем прочитать файлы. Это все работает, пока я не попытаюсь прочитать файлы как текст. Если я использую readAsDataURL()
, тогда я получаю целую кучу вещей, записанных на консоль.Phonegap FileReader readAsText возвращает значение null, но readAsDataURL работает
function(file) {
console.log(file);
var reader = new FileReader();
reader.onloadend = function(evt) {
console.log(evt.target.result);
};
reader.readAsDataURL(file);
}
Если я использую readAsText()
я получаю null
. Файлы варьируются от 300 КБ до 1,4 МБ, но все файлы возвращают null
в консоли.
reader.readAsText(file);
Почему одна функция возвращает что-то, а другая должна быть нулевой? Существует ли ограничение на размер текста, который он может читать?
Это file
объекта, который я вход перед созданием reader
, что я применяю функцию к (Я сократил имя файла):
{
"name":"categories.json",
"fullPath":"/var/mobile/.../Documents/data/file.json",
"type":null,
"lastModifiedDate":1380535318000,
"size":382456
}
И это объект ЭВТ для readAsText()
:
{
"type":"loadend",
"bubbles":false,
"cancelBubble":false,
"cancelable":false,
"lengthComputable":false,
"loaded":0,
"total":0,
"target":{
"fileName":"/var/mobile/.../Documents/data/file.json",
"readyState":2,
"result":"null",
"error":null,
"onloadstart":null,
"onprogress":null,
"onload":null,
"onerror":null,
"onabort":null
}
}
UPDATE: Я видел в W3C спецификации для API файла, что результат будет установлен только на нуль, если бы произошла ошибка. Но я попытался добавить функцию reader.onerror()
, но это не вызвало вызов.
Если во время чтения параметра blob возникает ошибка, установите для readyState значение DONE и установите для результата значение null. Перейдите к шагам ошибки.
Это убивает меня прямо сейчас. Увидел какой-то странный материал. Некоторые из них связаны с изменением имен переменных. Есть ли конфликт имен в файле или результат или что-то еще? –
На этот раз мне нужно было спрятать этот код, но я скоро вернусь к нему. Я попытаюсь использовать действительно уникальные имена переменных для каждого этапа, чтобы убедиться, что ничто не сталкивается. –
В моем случае я думаю, что я захватил файлEntry вместо файла. Должен был сделать файл 'fileEntry.file (function (fileObject) {... reader.readAsText (fileObject);})' –