2

我正在测试一些新的 JS 文件系统功能,即在本地文件系统中创建一个空文本文件。我正在从本地路径 (file:///) 运行 HTML 和 JS 文件。为此,我使用--allow-file-access-from-filesCLI 中的标志启动了 Google Chrome。文件系统请求是持久的(并且有效)。

我已经阅读了有关文件系统的不同帖子,复制和修改了教程中的一些代码;当我启动 HTML 文件时,我的自定义成功/失败消息会在控制台中输出;

这是结果:

Opened file system:/   // this is the root path of the JS Filesystem.

/wtf.txt  // this is the name and path of the text file I created+ it's a success

但是,当我查看我的目录(系统和应用程序根目录)时,没有我分配给它的名称的 .txt 文件。我怎么知道 Javascript 真正在哪里写了这个文件?在什么“根”(因为不能分配“根”)?文件系统是“沙箱”是什么意思?我无法在本地驱动器上访问它的(虚拟?)内容,而只能使用 JS?如果是这种情况,有没有办法提示用户保存文件?

提前感谢您的回答

4

1 回答 1

4

您似乎希望文件系统 API 在本地工作,类似于 OS 文件系统。客户端不是那样工作的。事实上,API 被设计为作为程序员的文件和目录的接口——客户端本身(例如,Chrome 等)将在本地处理其余部分。该 API 并非旨在让您通过浏览器创建文件并通过操作系统轻松访问它。

我怎么知道 Javascript 真正在哪里写了这个文件?在什么“根”(因为不能分配“根”)?

从技术上讲,每个客户端都可以选择在本地存储。因此,虽然您可以去本地文件系统查找文件,但如果您尝试这样做,您的方法就有问题;文件系统 API 不是为此而设计的。对于您的问题,您可以假设如果客户端的存储区域有内容(例如,对于 Chrome,它类似于“C:\Users\USERNAME\AppData\Local\Google\Chrome\User Data\Default\File System\”)然后您可以假设 JavaScript 编写了它。但同样,它不是为在本地系统上进行用户友好浏览而设置的。

文件系统是“沙箱”是什么意思?

沙盒只是指为特定目的创建和留出的区域,客户无法看到/访问该区域。从 Mozilla 看到这个:https ://developer.mozilla.org/en-US/docs/WebGuide/API/File_System/Introduction#virtual

我无法在本地驱动器上访问它的(虚拟?)内容,而只能使用 JS?

这是正确的,并且是设计使然。

如果是这种情况,有没有办法提示用户保存文件?

如果我正确理解您的问题,您是在询问是否有办法向用户提供特定文件并提示他们将其保存在本地。好吧,当然,如果您提供文件的链接(或推送它,不同的讨论),那么如果他们的平台允许他们这样做,客户端将提示用户保存/存储它。但是您无法控制他们将其保存在本地的位置,您以后也无法获得它。如果我误解了你的问题,请在下方评论,我会跟进。

于 2013-08-22T05:45:25.243 回答