fileReader是一种一步文件读取机制,可以把fileReader想成类似于XMLHttpRequest,只不过读取是从 文件系统读取文件
(本地),而不是从服务器读取数据。
这些读取数据的方法为处理文件数据提供了极大的灵活性。例如,为了向用户显示图片,可以将图片读取为URI,其中最有用的事件是,progress,error,load,分别表示更多数据,发生错误,读取文件完成。
progress事件每50毫秒就会触发一次,可以读取FileReader的result属性。
error事件会错误无法读取文件时触发,可以在FIleReader的error中读取,这是一个属性对象,只包含code,错误代码1(未找到),2(安全错误),3(读取被中断),4(文件不可读),5(编码错误)。
load会在文件加载后触发,如果error被触发,则不会触发load事件
- readAsText(file,encoding):读取纯文本内容保存在result属性中,第二个参数表示编码(可选)
- readAsDataURL(file):读取文件并保存内通的URL保存在result属性中,可以通过url访问
- readAsBinaryString(file):读取文件并将每个字符的二进制保存在result属性中
- readAsArrayBuffer(file):读取文件并将文件内存以ArrayBuffer形式保存在result属性中
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<img src="" alt="">
<input type="file">
</body>
</html>
<script>
document.querySelector('input').onchange = function(event){
let file = event.target.files[0];
let reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function(){
document.querySelector('img').src = reader.result;
}
}
</script>