1、FileReader概述
FileReader 对象允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用 File
或 Blob
对象指定要读取的文件或数据。
其中File对象可以是来自用户在一个<input>
元素上选择文件后返回的FileList
对象,也可以来自拖放操作生成的DataTransfer
对象,还可以是来自在一个HTMLCanvasElement
上执行mozGetAsFile()方法后返回结果
。
2、FileReader接口方法
方法名 | 参数 | 描述 |
readAsBinaryString | file | 将文件读取为二进制码 |
readAsText | file,[encoding] | 将文件读取为文本 |
readAsDataURL | file | 将文件读取为DataURL |
readAsArrayBuffer | file | 将文件读取为ArrayBuffer对象 |
abort | (none) | 中断读取操作 |
3、FileReader接口事件
事件 | 描述 |
onabort | 数据读取中断时触发 |
onerror | 数据读取出错时触发 |
onloadstart | 数据读取开始时触发 |
onprogress | 数据读取中 |
onload | 数据读取成功完成时触发 |
onloadend | 数据读取完成时触发,无论成功失败 |
4、使用实例
<!DOCTYPE html>
<html lang="zh-cn">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8"><title>Html5Test</title>
</head>
<body><article><header></header><section><p><lable>请选择一个文件:</lable><input type="file" id="file_reader"><input type="button" value="读取图像" οnclick="readAsDataUrl();"><input type="button" value="读取二进制数据" οnclick="readAsBinaryString();"><input type="button" value="读取文本文件" οnclick="readAsText();"></p><div id="file_reader_result" name="file_reader_result"><!-- 这里用来显示读取结果 --></div><script>var file_reader_result = document.getElementById("file_reader_result");// 检测浏览器是否支持FileReaderif (typeof FileReader == "undefined") {file_reader_result.innerHTML = "您的浏览器不支持FileReader";file.setAttribute('disabled', 'disabled');}// 将文件以Data Url形式读入页面function readAsDataUrl(){// 检查是否为图像文件var f = document.getElementById("file_reader").files[0];if (!/image\/\w+/.test(f.type)) {file_reader_result.innerHTML = "请上传图片文件!";return false;};var reader = new FileReader();// 将文件以Data Url形式读入页面reader.readAsDataURL(f);reader.onload = function(e){file_reader_result.innerHTML = '<img src="' + this.result + '" alt="图片" />';}}// 将文件以二进制形式读入页面function readAsBinaryString(){// 检查是否为图像文件var f = document.getElementById("file_reader").files[0];if (!/image\/\w+/.test(f.type)) {file_reader_result.innerHTML = "请上传图片文件!";return false;};var reader = new FileReader();// 将文件以二进制形式读入页面reader.readAsBinaryString(f);reader.onload = function(e){file_reader_result.innerHTML = this.result;}}// 将文件以文本形式读入页面 目前测试仅支持txt文件function readAsText(){// 检查是否是文本文件var f = document.getElementById("file_reader").files[0];if (!/text\/\w+/.test(f.type)) {file_reader_result.innerHTML = "请上传文本文件!";return false;};var reader = new FileReader();// 将文件以文本形式读入页面reader.readAsText(f);reader.onload = function(e){file_reader_result.innerHTML = this.result;}}</script></section></article>
</body>
</html>
更多参考内容详见:MDN FileReader