# FileReader
对象
FileReader
对象允许Web应用程序异步读取存储在用户计算机上的文件
文件内容读取样例
<div>
上传文件 : <input type="file" name="file" id="fileId" onchange="read(event)"/>
</div>
<textarea id="fileTxt"> 显示文本内容 </textarea>
function read() {
var file = event.target.files[0];
var reader = new FileReader();
reader.readAsText(file, "UTF-8");
reader.onload = function (evt) {
var fileString = evt.target.result;
document.getElementById('fileTxt').innerHTML = fileString;
}
}
new FileReader()
实例简单介绍
FileReader.onloadstart
事件
FileReader.onload
事件
FileReader.onloadend
事件
- 该事件在读取操作结束时,无论成功还是失败都会触发触发
FileReader.readAsText()
、FileReader.readAsBinaryString()
和FileReader.readAsDataURL()
方法
- 读取指定的
Blob
中的内容,result
属性中将包含读取的文件内容。
readAsText()
的结果以字符串形式展示
readAsBinaryString()
以原始二进制展示
readAsDataURL()
以Base64字符串以表示
- 其他详细用法,请参考
MDN
👉点击
# ActiveXObject
对象
FileReader
对象固然好用,但是只支持到IE10+,对于低版本IE只能借助 ActiveXObject
- 由于
ActiveXObject
是微软提供的,因此只支持IE内核的浏览器,也可用它检验当前浏览器是否为IE
低版本IE文件内容读取示例
<div>
文件路径: <input type="input" id='URL' placeholder="请输入需读取的文件路径" />
<button onclick="getTxt()">获取</button>
<textarea id="fileTxt"> 显示文本内容 </textarea>
</div>
function getTxt() {
if (window.ActiveXObject || "ActiveXObject" in window){
return true;
}else{
alert('该浏览器不支持ActiveXObject')
return false;
}
var ActiObj = new ActiveXObject("Scripting.FileSystemObject");
var url= document.getElementById('URL').value;
var file = ActiObj.OpenTextFile(url, 1);
var txt = file.ReadAll();
document.getElementById('fileTxt').innerHTML = txt;
}
可能会遇到的问题
显示、Automation服务器不能创建对象
- 如:

- 这是由于IE浏览器中的安全限制造成的
- 解决:检查
IE->internet选项->安全->自定义级别
找到ActiveX控件
进行修改启用即可

- 疯狂吐槽:之前有个旧设备XP系统装的IE8,以为ActiveXObject控件问题,结果排查半天是indexOf不支持。