正如其他人在这里提到的,FileWriter和FileSystem API 可用于从浏览器选项卡/窗口的上下文将文件存储在客户端计算机上。
但是,您应该注意与这些 API 有关的几件事:
- API 的实现目前仅存在于基于 Chromium 的浏览器(Chrome 和 Opera)中
- 这两个 API 均已于 2014 年 4 月 24 日脱离 W3C 标准轨道,并且现在是专有的
- 将来有可能从实现浏览器中删除(现在是专有的)API
- 沙箱(磁盘上的一个位置,文件不能产生任何影响)用于存储使用 API 创建的文件
- 使用虚拟文件系统(一种目录结构,不一定以与从浏览器中访问时相同的形式存在于磁盘上)表示使用 API 创建的文件
尚未提及的IsolatedStorage也允许从选项卡/窗口上下文中进行文件 i/o,但它仅通过 Silverlight 提供,并且需要使用托管代码才能访问。它与 FileSystem 一样,也存在于沙箱中并使用虚拟文件系统。
鉴于基于 Chromium 的浏览器和 Silverlight 的高市场渗透率(有趣的是,此类浏览器已经放弃了对它们的支持),您可能会发现使用上述第一种方法的解决方案在客户端计算机上可用。
BakedGoods是一个 Javascript 库,它建立了一个统一的接口,可用于在所有原生(包括 FileSystem)和一些非原生(包括独立存储)存储设施中进行常见的存储操作,就是这种解决方案的一个示例:
//Write file to first of either FileSystem or IsolatedStorage
bakedGoods.set({
data: [{key: "testFile", value: "Hello world!", dataFormat: "text/plain"}],
storageTypes: ["fileSystem", "silverlight"],
options: {fileSystem:{storageType: Window.PERSISTENT}},
complete: function(byStorageTypeStoredItemRangeDataObj, byStorageTypeErrorObj){}
});
只是为了完全透明,这个人在这里维护 BakedGoods :)。