我在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);
}
如果我调用此函数,结果是不确定的。
使用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;
}