我试图了解Javascript中的文件I / O,这令人困惑。我有一个文件输入,它从磁盘加载文件,然后使用阅读器读取内容。但是,当我重复该过程时,该文件将不会第二次或第三次读取。 这是代码:
<html>
<head>
</head>
<body>
<input type="file" id="myFile">
<script type="text/javascript">
window.onload = function() {
var input = document.getElementById("myFile");
var output = document.getElementById("output");
input.addEventListener("change", function() {
if (this.files && this.files[0]) {
var myFile = this.files[0];
var reader = new FileReader();
reader.addEventListener('load', function(e) {
console.log(e.target.result);
});
reader.readAsText(myFile);
}
});
}
</script>
</body>
</html>
当我第一次读取文件时,console.log会输出e.target.result。当我尝试第二次读取文件时,它将无法打印。即使我更改文件的内容。但是它将打印我加载到其中的新文件。是否可以两次加载同一文件?
答案 0 :(得分:3)
发生的是,如果您选择相同的文件,则不会为输入触发change事件。 (比较是在我认为的所选文件名上,没有花哨的大小或类似“智能”的东西)
您可以尝试在打开文件浏览器之前清除选择,因此即使选择相同的文件也会导致“新”选择