2013-03-18 96 views
3

我想创建一个HTML5应用程序,能够访问大量的文件。因此,我查看了FileSystem API以便能够从本地文件系统读取文件。HTML5文件系统API进行Android的浏览器访问到SD卡

我做的PoC使用PhoneGap的文件API,所有的预期一样,我是能够生产使用在Chrome桌面文件系统API进行了类似的结果...

但是我面临着一个严重的问题,而我可以在桌面访问我的文件系统,但无法从Android Chrome访问SD卡。我试图用这个演示:

http://html5-demos.appspot.com/static/filesystem/filer.js/demos/index.html

我可以在桌面选择我的本地系统文件:我的图片,等...但我不能做同样与Android浏览器

如何我可以在Android Chrome中访问设备文件系统/ sdcard吗?

回答

4

this article on HTML5 Rocks

要记住,这个文件系统是沙箱,这意味着一个Web应用程序无法访问其他应用程序的文件,这一点很重要。这也意味着您无法将文件读取/写入用户硬盘上的任意文件夹(例如“我的图片”,“我的文档”等)。

文件系统API的目的是让你的应用程序来创建和操作,将您的应用程序的用法之间依然存在的文件。它不能用于暴露沙箱外的任意文件。

另外,该File API可以用来阅读,虽然不是从整个系统的修改,文件。但是,File API不能用于读取系统上的任意文件。它的用法基于HTML <input type=file>标记,其中用户必须明确输入要读取的文件。

上述适用于Android中的Chrome因为它没有桌面浏览器相同的运行的应用程序,让你的运气,除非用户愿意使用输入授予你想要的文件的访问。但是,您提到您也尝试使用PhoneGap的PoC。 PhoneGap File API虽然主要作为HTML5实现的包装器,但有一些细微的差别,主要在于它允许访问SD卡上的任意文件。当使用API​​调用window.requestFileSystem()时,您的成功回调将具有一个参数FileSystem对象,其中root属性是对/ sdcard文件夹的引用。这可以用来遍历你的SD卡并在其中的任何地方创建FileReader和FileWriters。

+0

嗨马特,我也读过这篇文章,我明白这是一个沙盒的FS。但是,在桌面上,我可以从“我的图片”和“我的文档”等等中选择文件。您可以尝试使用我发布的链接。在Android中,我无法正确选择目录,但我可以选择文件。我所做的PhoneGAP PoC能够读取SD卡上的目录。我能够创建DirectoryReader没有太多问题。我能够使用FileSystem API在Chrome Desktop中复制该PoC,但我无法使用Android Chrome版本进行操作。这是非常令人沮丧的 – Astronaut 2013-03-18 22:35:23

+1

我明白了。只是为了多一点澄清,是你有你在所有Android上是无法选择目录中的问题,或发现有与DirectoryReader一个问题是选择一个目录后?此外,您发布的代码演示是否在所有平台上进行此测试? – MattDavis 2013-03-20 15:26:16

+0

我无法在Android中选择目录。演示在所有平台上都是一样的。 – Astronaut 2013-03-20 15:59:04