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>
