HTML5之FileReader小结
方法:
方法名 | 参数 | 描述 |
abort | none | 中断读取 |
readAsBinaryString | file | 将文件读取为二进制码 |
readAsDataURL | file | 将文件读取为 DataURL |
readAsText | file, [encoding] | 将文件读取为文本 |
readAsBinaryString:该方法将文件读取为二进制字符串,通常我们将它传送到后端,后端可以通过这段字符串存储文件。
readAsDataURL:这是例子程序中用到的方法,该方法将文件读取为一段以 data: 开头的字符串,这段字符串的实质就是 Data URL,Data URL是一种将小文件直接嵌入文档的方案。这里的小文件通常是指图像与 html 等格式的文件。
FileReader 包含了一套完整的事件模型,用于捕获读取文件时的状态,下面这个表格归纳了这些事件:
事件 | 描述 |
onabort | 中断时触发 |
onerror | 出错时触发 |
onload | 文件读取成功完成时触发 |
onloadend | 读取完成触发,无论成功或失败 |
onloadstart | 读取开始时触发 |
onprogress | 读取中 |
示例代码如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>File Test</title> </head> <script type="text/javascript"> var result = document.getElementById("result"); var file = document.getElementById("file"); //判断浏览器是否支持FileReader接口 if (typeof FileReader == 'undefined') { result.InnerHTML = "<p>你的浏览器不支持FileReader接口!</p>"; //使选择控件不可操作 file.setAttribute("disabled", "disabled"); } function readAsDataURL() { //检验是否为图像文件 var file = document.getElementById("file").files[0]; if (!/image\/\w+/.test(file.type)) { alert("看清楚,这个需要图片!"); return false; } var reader = new FileReader(); //将文件以Data URL形式读入页面 reader.readAsDataURL(file); reader.onload = function (e) { var result = document.getElementById("result"); //显示文件 result.innerHTML = '<img src="' + this.result + '" alt="" />'; } } function readAsBinaryString() { var file = document.getElementById("file").files[0]; var reader = new FileReader(); //将文件以二进制形式读入页面 reader.readAsBinaryString(file); reader.onload = function (f) { var result = document.getElementById("result"); //显示文件 result.innerHTML = this.result; } } function readAsText() { var file = document.getElementById("file").files[0]; var reader = new FileReader(); //将文件以文本形式读入页面 reader.readAsText(file); reader.onload = function (f) { var result = document.getElementById("result"); //显示文件 result.innerHTML = this.result; } } </script> <body> <p> <label>请选择一个文件:</label> <input type="file" id="file"/> <input type="button" value="读取图像" onclick="readAsDataURL()"/> <input type="button" value="读取二进制数据" onclick="readAsBinaryString()"/> <input type="button" value="读取文本文件" onclick="readAsText()"/> </p> <div id="result" name="result"></div> </body> </html>