javascript - fileReader.onload 不会第二次运行,即使选择了不同的文件
问题描述
document.getElementById("uploadExcel").addEventListener("click", function () {
$("#uploadExcel").attr('disabled', true);
$('#loader').show();
if (selectedFile) {
var fileReader = new FileReader();
alert("2");
fileReader.onload = function (event) {
alert(event);
var data = event.target.result;
alert("3");
var workbook = XLSX.read(data, {
type: "binary", cellDates: true, dateNF: 'mm/dd/yyyy;@'
});
alert("4");
workbook.SheetNames.forEach(sheet => {
alert("5");
let rowObject = XLSX.utils.sheet_to_row_object_array(
workbook.Sheets[sheet]
);
let jsonObject = JSON.stringify(rowObject);
alert("Get Data");
getData(jsonObject);
//document.getElementById("jsonData").innerHTML = jsonObject;
});
};
alert("6");
fileReader.readAsBinaryString(selectedFile);
} else {
alert("error");
}
});
现在让我解释一下发生了什么:
页面加载,我选择要上传的文件,即使它有 excel 错误,它也会通过,它会获取文件并读取它,转换它并抛出错误。
所以我把那个excel文件改成无错误,然后再次尝试点击上传按钮,但这一次代码进入了上面的函数,它不会越过fileReader.onload = function (event)
它警报“2”然后停止工作。
您能否告诉我为什么会发生这种情况以及如何在不重新加载页面的情况下避免这种情况,因为如果我重新加载页面,一切都会按预期工作。
谢谢
解决方案
推荐阅读
- css - NativeScript Angular 动态更改 .ns-root 变量
- c++ - vcxproj 从 vs2013 更新到 vs2015 后的 ICE(内部编译器错误)
- nlp - 在 BERT 中,我需要使用哪种预训练模型进行长文本分类?
- ruby-on-rails - 如何使用 ransack 在 JSONB 中搜索日期时间值
- visual-studio-2019 - VS 16.5.X“项目系统数据流DataflowBlockSlim”出错
- react-native - 是否有任何解决方案可以使用 react-native 删除或隐藏 flexmonster 中的顶部工具栏部分?
- javascript - 如何检测何时标签在Javascript中是空的?
- video - 如果视频 js 播放器中的主要 URL 失败,是否有可能从另一个备用 URL 加载视频?
- mongodb - 如何在 mongo v3.4 中限制内存大小
- testing - 赛普拉斯 PORT 在集成测试中返回未定义(可视)