因为 JavaScript 中的 web API 有了新的方法 File API, 所以我们在浏览器上读取文件并处理数据更加方便而且不需要使用到后端服务器.
FileReader 就是从一个文件中读取数据并存储在一个 JavaScript 变量中, 它与 XMLHttpRequest 含义差不多, 都是从一个外部资源加载数据而且读操作是异步的, 这样的好处是不会使浏览器堵塞. 它读取操作的方法有多种多样的, 例如以下几种方法
(1)readAsText() - 以纯文本的形式返回文件内容
该 readAsText() 方法可用于读取文本文件. 该方法有两个参数. 第一个参数是用于 File 或 Blob 要被读取的对象. 第二个参数用于指定文件的编码. 第二个参数是可选的. 如果未指定, UTF-8 则默认采用编码.
在设置中需要在文件加载完成后设置一个事件监听器. onload 调用事件时, 我们可以检查 result 属性 FileReader 所获取文件的内容.
- <input type="file" id="file" />
- <script type="text/javascript">
- var file=document.getElementById("file");
- var reader = new FileReader();
- reader.onload=function(e){
- var text=reader.result;
- }
- reader.readAsText(file);
- </script>
(2)readAsArrayBuffer() 方法
该方法将读取一个 Blob 或一个 File 对象并生成一个 ArrayBuffer. 当读取操作完成时, readyState 变成 done(已完成), 并触发 loadend 事件, 同时 result 属性中将包含一个 ArrayBuffer 对象用以表示所读取文件的数据, ArrayBuffer 是固定长度的二进制数据缓冲区.
在操作文件时比如将 JPEG 图像转换为 PNG.
- <script type="text/javascript">
- var file=document.getElementById("file");
- var reader = new FileReader();
- reader.onload=function(e){
- var readAsArrayBuffer=reader.result;
- }
- reader.readAsArrayBuffer(file);
- </script>
(3)readAsDataURL() 使用数据 URL 的形式返回文件内容
该方法接受 File 或 Blob 生成数据 URL, 这基本上是文件数据的 base64 编码字符串可以将此数据 URL 用于设置 src 图像属性等内容
- <script type="text/javascript">
- var file=document.getElementById("file");
- var reader = new FileReader();
- reader.onload=function(e){
- var dataURL = reader.result;
- }
- reader.readAsDataURL(file);
- </script>
上面的三种方法在使用过程中要在开始读取之前, 必须监听 load 事件, 而 event.target.result 是返回读取的结果.
来源: http://www.css88.com/qa/javascript/11768.html