<input type="file" id="excel-file" onchange="readExcel(this)" style="margin-left:9px">这个的onchange事件为什么不能传相同名称但内容不同的文件,解决办法在文件名称后面加时间戳读取文件的 具体案例
时间: 2023-07-06 07:38:22 浏览: 96
关于onchange事件在IE和FF下的表现及解决方法
假设你有一个input元素,它的id为"excel-file",你想要在用户选择文件后读取文件内容,并且要避免相同名称但内容不同的文件被浏览器缓存导致无法触发onchange事件。你可以按照以下步骤进行操作:
1. 给input元素添加一个onchange事件处理函数,函数名为readExcel,例如:
```html
<input type="file" id="excel-file" onchange="readExcel(this)" style="margin-left:9px">
```
2. 在readExcel函数中,获取用户选择的文件对象,并为每个文件对象生成一个唯一的文件名,例如:
```javascript
function readExcel(input) {
// 获取用户选择的文件对象
var file = input.files[0];
// 生成唯一的文件名
var fileName = file.name + '_' + Date.now();
// 读取文件内容
// ...
}
```
3. 在生成唯一文件名后,你就可以读取文件内容了。在读取文件内容时,你可以使用FileReader对象,例如:
```javascript
function readExcel(input) {
// 获取用户选择的文件对象
var file = input.files[0];
// 生成唯一的文件名
var fileName = file.name + '_' + Date.now();
// 读取文件内容
var reader = new FileReader();
reader.readAsText(file);
reader.onload = function(event) {
var contents = event.target.result;
console.log(contents);
};
}
```
在上面的代码中,我们使用FileReader对象读取文件内容,并将其以文本形式返回。当读取完成后,我们将文件内容输出到控制台中。注意,这里我们没有使用时间戳或随机数来生成唯一文件名,而是使用了Date.now()函数,它可以返回当前时间的毫秒数,因此可以保证每个文件名都是唯一的。
阅读全文