JS Filesystem API:在本地系统上访问JS FileEntry?

时间:2013-08-17 12:25:26

标签: javascript file-io filesystems html5-filesystem

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

我已经阅读了关于文件系统的不同帖子,复制并修改了教程中的一些代码;当我启动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真正写到这个文件的位置?在什么“根”(因为'根'不能分配)? FileSystem是一个“沙箱”是什么意思?我无法在本地驱动器上访问它的(虚拟?)内容,但只能使用JS?如果是这种情况,有没有办法提示用户保存文件?

提前感谢您的回答

1 个答案:

答案 0 :(得分:3)

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

我如何知道Javascript真正写入此文件的位置?在什么“根”(因为'根'不能分配)?

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

FileSystem是一个'沙盒'是什么意思?

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

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

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

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

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