FileReader API 跳过我的方法,即使它只有 2.5 MB 并且使用 Chrome 57
FileReader API skips my method even though it is only 2.5 MB and using Chrome 57
我刚刚注意到 FileReader API
跳过了 handleFiles(appCSV)
和 returns undefined
。
appDictionary = handleFiles(appCSV);
dbDictionary = handleFiles(dbCSV);
我的 appCSV
文件大小只有 2584729 bytes
或大约 2.5 MB
。是因为这个问题吗?
这很奇怪,因为我已经在使用 Chrome 57
。
请帮助我调查并提供解决方案或解决方法。谢谢!
handleFiles
函数的主体:
function handleFiles(files) {
// Check for the various File API support.
if (window.FileReader) {
// FileReader are supported.
getAsText(files[0]);
} else {
alert('FileReader are not supported in this browser.');
}
}
function getAsText(fileToRead) {
let reader = new FileReader();
// Handle errors load
reader.onload = loadHandler;
reader.onerror = errorHandler;
// Read file into memory as UTF-8
reader.readAsText(fileToRead);
}
function loadHandler(event) {
let csv = event.target.result;
processDataToDictionary(csv);
}
function errorHandler(evt) {
if (evt.target.error.name == "NotReadableError") {
alert("Cannot read file!");
}
}
我已经解决了我自己的问题。这是因为 FileReader API
的 onLoad
事件是 asynchronous
.
所以我决定将 handleFiles()
函数放在 onchange() property
和 input type = 'file'
中。
我刚刚注意到 FileReader API
跳过了 handleFiles(appCSV)
和 returns undefined
。
appDictionary = handleFiles(appCSV);
dbDictionary = handleFiles(dbCSV);
我的 appCSV
文件大小只有 2584729 bytes
或大约 2.5 MB
。是因为这个问题吗?
这很奇怪,因为我已经在使用 Chrome 57
。
请帮助我调查并提供解决方案或解决方法。谢谢!
handleFiles
函数的主体:
function handleFiles(files) {
// Check for the various File API support.
if (window.FileReader) {
// FileReader are supported.
getAsText(files[0]);
} else {
alert('FileReader are not supported in this browser.');
}
}
function getAsText(fileToRead) {
let reader = new FileReader();
// Handle errors load
reader.onload = loadHandler;
reader.onerror = errorHandler;
// Read file into memory as UTF-8
reader.readAsText(fileToRead);
}
function loadHandler(event) {
let csv = event.target.result;
processDataToDictionary(csv);
}
function errorHandler(evt) {
if (evt.target.error.name == "NotReadableError") {
alert("Cannot read file!");
}
}
我已经解决了我自己的问题。这是因为 FileReader API
的 onLoad
事件是 asynchronous
.
所以我决定将 handleFiles()
函数放在 onchange() property
和 input type = 'file'
中。