msSaveBlob任意路径/保存在哪里

msSaveBlob arbitrary path / where does it save?

本文关键字:保存 在哪里 路径 任意 msSaveBlob      更新时间:2023-09-26

我被要求用JS做一些不自然的事情。

基本上,我需要以允许用户在本地文件系统中修改文件的方式持久保存文件。

我看到HTML5指定了一个FileWriter API,它似乎部分适合这一点。不幸的是,用户有IE——http://caniuse.com/filesystem--所以最接近的东西似乎是msSaveBlob。

msSaveBlob支持任意文件路径吗?理想情况下,我希望将这些文件保存在用户的"Documents"文件夹中。如果没有,这个沙盒文件系统是如何工作的?它在哪里?它是否保留了原始文件的特征(或者BLOB是否意味着某种类型的块存储)?

注意-我知道有一个带有常规链接的"另存为"选项,但我需要知道用户最终将文件保存在哪里。

或者,你知道一种更好的保存方式吗,让我使用任意路径?我并不反对Flash或Silverlight解决方案,只要它带有JS包装即可。

FileSystem API目前仅受Google Chrome和Opera支持。此API可用于创建、读取、写入和删除文件和目录,但只能用于文件系统的独立部分。我在这里展示了一个详细的例子(请参阅答案的第二部分)。

关于navigator.msSaveBlob,下面是MSDN上的一个示例。此功能显示带有"保存"answers"另存为"按钮的通知栏。通过单击后者,用户可以选择任意位置来保存文件。

如果您使用navigator.msSaveOrOpenBlob,则用户还将获得一个"打开"按钮。如果用户单击此项,则该文件将被打开。在我上面提到的MSDN示例中,从JavaScript字符串创建了一个文本文件,该字符串将在记事本中打开。

使服务器上的文件可以保存到客户端机器上的任意位置的常用方法是创建一个链接。用户可以点击链接,或者从弹出菜单中选择"将链接另存为…"。如果您想保存用JavaScript创建的blob,那么您可以尝试使用<a>标记的download属性,我在这里展示了一个示例。这项技术适用于IE10+。