W3C已经起草了一份准备为Javascript引入有限的本地文件操作功能的草案。这会使Web应用程序操作本地文件变成现实。

新的Javascript API目标是使Web应用程序具有有限的本地文件操作权限。由Mozilla的Arun Ranganathan起草的一份描述新的Javascript API 的草案已经提交到了W3C,目的是使这样的API变为公开的标准。这些API已经在Firefox的nightly builds版本中得到了很好的支持。 这些文件API规范将会引入一个FileReader的对象用来异步加载本地文件。这个对象允许用户为文件加载的各个事件定义回调函数。例如:加载 失败、正在加载或加载完成等。提供读取本地文本或者二进制文件的功能。并且听过退出函数,来终止加载。 有了FileReader将能够在客户端实现一些操作本地文件的功能,而不必将文件上传到服务端。其实在IE和Firefox内已经存在一些不标准的操作 本地文件的方法(在高权限模式),但是这些功能在标准的javascript中是无法使用的。

FileReader不需要什么特殊的权限。当然介于安全的考虑,程序员并不能够随意的读取任意路径的文件。设计是这样的,它是配合HTML的input 标签一起使用的。用户在明确地选择文件之后,javascript程序可以使用DOM方法将文件内容传递给FileReader使用。这样就不会存 在安全问题了,用户会明确程序访问的是什么文件,从而防止了用户的机密文件泄露。 为了更好的理解新API如何使用。我这里写了一个小例子来加载一个本地文件并且把它显示在一个div标签中。为了让这个小例子更有意思,我使 用contentEditable属性,这样用户就能够修改加载文件的内容。需要注意的是:新的API并不支持文件的写入操作。所以这里用户是无法保存自 己的修改结果的。

### HTML File Reader Test



    

Select a file:
    
    Load

    



    


    Bold
    Italic

    Underline

现在的javascript解析引擎已经变的越来越快,越来越强大。这在以前的浏览器中是不可能的。可以访问本地文件后将会大大增强客户端处理的 能力。 操作本地文件的API并不是什么革命性的技术,但是他将会大大增强Web应用程序的能力和效果。 Liamxd翻译自:[Client-side JavaScript file processing may come via File API](http://arstechnica.com/open- source/news/2009/11/w3c-publishes-draft-of-new-file-api-spec.ars)