试图从ExtJS中的FileReader获取结果

问题描述 投票:0回答:1

我在ExtJs中使用FileReader,我想在读取文件后返回一个布尔值,并将行号与常量进行比较。问题是我无法在on-load事件中得到结果。我想我需要使用回调但我不知道用回调编写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);
}

如果我调用此函数,结果是不确定的。

javascript extjs callback filereader
1个回答
0
投票

使用FileReader对象获取文件的大小是过度的,您可以使用File对象的size属性。

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;
}
© www.soinside.com 2019 - 2024. All rights reserved.