2013-08-17 130 views
1

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

我已阅读关于文件系统的不同文章,复制和修改了教程中的一些代码;当我启动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?如果是这种情况,有没有办法提示用户保存文件?

预先感谢您的回答

回答

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?

这是正确的,并通过设计。

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

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

+0

不,谢谢,这回答我的问题。感谢您提供的链接。 – Tyblitz