Попытка получить результат из FileReader в ExtJS - PullRequest
0 голосов
/ 06 марта 2019

Я использую FileReader в ExtJs и хочу вернуть логическое значение после чтения файла и сравнить число строк с константой. Проблема в том, что я не могу получить результат в событии загрузки. Я думаю, что мне нужно использовать обратный вызов, но я не знаю, как написать функцию ExtJs с обратным вызовом. Любая помощь, пожалуйста?

Моя функция:

fileHasAdmittedSize: function() {
    var me = this;
    var file = me.getView().down('#newImsiForm').down('filefield').getEl().down('input[type=file]').dom.files[0];
    var reader = new FileReader();
    reader.onload = (function() {
        return function(e) {
            var match = e.target.result.match(/\r?\n/g);
            if (match.length > 4000000) {
                Ext.MessageBox.show({
                    title: 'ERROR',
                    msg: WebUI.Msg.imsiMaxFileSize,
                    icon: Ext.MessageBox.ERROR,
                    buttons: Ext.Msg.OK
                });
                return false;
            } else {
                return true;
            }
        };
    })(file);
    reader.readAsText(file);
}

Если я вызову эту функцию, результат не определен.

1 Ответ

0 голосов
/ 06 марта 2019

Использование объекта FileReader для получения размера файла излишне, вы можете просто использовать свойство size объекта File.

fileHasAdmittedSize: function() {
    var file = me.getView().down('#newImsiForm').down('filefield').getEl().down('input[type=file]').dom.files[0];
    if (file.size > 4000000) {
        Ext.MessageBox.show({
            title: 'ERROR',
            msg: WebUI.Msg.imsiMaxFileSize,
            icon: Ext.MessageBox.ERROR,
            buttons: Ext.Msg.OK
        });
        return false;
    } 
    return true;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...