在 W3C 草案中的 File API 中,提供了 FileReader 对象。利用 FileReader,不和服务器交互我们也可以在浏览器中打开本地文件,而且这种方法更加优雅。我们来看最简单的例子(查看效果):
<html> <body> <input type="file" id="openselect"/> <textarea id="showresult"></textarea> <script> function doOpen(evt) { var files = evt.target.files, reader = new FileReader(); reader.onload = function() { showout.value = this.result; }; reader.readAsText(files[0]); } var openbtn = document.getElementById("openselect"), showout = document.getElementById("showresult"); openselect.addEventListener("change", doOpen, false); </script> </body> </html>
这个 FileReader API 在 Firefox 3.6,Chrome 6,IE 10 和 Opera 11.1 这些浏览器中开始得到支持。
相应地,要在浏览器中保存本地文件,可以看这篇文章。
参考资料:
[1] W3C File API
[2] file upload control - HTML5
[3] Reading local files in JavaScript - HTML5 Rocks
[4] When can I use FileReader API?
[5] FileReader - MDN
[6] Using files from web applications - MDN
[7] File, FileReader 和 Ajax 文件上传
[8] Chrome FileReader - Stack Overflow
[9] FileReader: onload doesn't works as local file mode
[A] HTML5中File对象初探 | JS Mix
[B] FileReader详解与实例---读取并显示图像文件 | JS Mix
[C] Getting File Handles: Directory Upload