1.基本说明
- FileReader可以主要用于将文件内容读入内存,通过一系列异步接口,可以在主线程中访问本地文件
- 本地文件一般通过文件域进行选择,选中后再使用FileReader进行访问
2.创建文件读取对象
var reader = new FileReader()
3.读取文件的方法
- 以异步的形式读取文件,不同的读取方法返回不同的数据格式
- 读取文件是异步操作,想要获得读取结果要使用事件监听
方法名 |
说明 |
readAsText() |
用于读取文本文件,返回文本字符串 |
readAsBinaryString() |
读取任意类型文件,返回二进制字符串 |
redaAsDataURL() |
读取文件内容,结果用data:url的字符串形式表示 |
readAsArrayBuffer() |
读取文件,返回格式为为arraybuffer |
4.读取时的事件监听
- 执行读取的方法后,通过事件监听获取读取结果
- 读取成功后,在onload回调中,通过实例化对象的result属性获取返回结果
事件名 |
说明 |
onabort |
该事件在读取操作被中断时触发 |
onerror |
该事件在读取操作发生错误时触发 |
onload |
该事件在读取操作结束时(要么成功,要么失败)触发 |
onloadstart |
该事件在读取操作开始时触发 |
onprogress |
在读取数据过程中持续触发 |
var reader = new FileReader()
reader.onloadstart = function() {
console.log('文件开始读取')
}
reader.onprogress = function() {
console.log('文件读取中')
}
reader.onload = function() {
console.log('文件读取成功')
}
5.实例
<form action="">
<input type="file" name="file" id="file">
</form>
<div id="showBox">
<p></p>
<img src="" alt="" width="400px">
</div>
window.onload = function() {
var myFile = document.getElementById('file');
var showBox = document.getElementById('showBox');
myFile.onchange = function() {
var reader = new FileReader();
reader.readAsText(myFile.files[0], 'utf-8');
reader.onload = function() {
showBox.querySelector('p').innerHTML = reader.result;
}
}
}
window.onload = function() {
var myFile = document.getElementById('file');
var showBox = document.getElementById('showBox');
myFile.onchange = function() {
var reader = new FileReader();
reader.readAsDataURL(myFile.files[0]);
reader.onload = function() {
showBox.querySelector('img').src = reader.result;
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了