HTML5 FileSystem API Android Chrome访问SD卡

时间:2013-03-18 18:13:50

标签: android html5 google-chrome filesystems html5-filesystem

我正在尝试创建一个能够访问大量文件的HTML5应用程序。因此,我查看了FileSystem API,以便能够从本地文件系统中读取文件。

我使用phonegap文件AP​​I进行了PoC,并且都按预期工作,我能够使用Chrome桌面上的FileSystem API生成类似的结果...

但是我遇到了一个严重的问题,虽然我可以在桌面访问我的文件系统,但我无法从Android Chrome访问sdcard。我试着用这个演示:

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

我可以在桌面上选择本地系统中的文件:我的图片等...但我不能用Android Chrome做同样的事情

如何在Android Chrome中访问设备文件系统/ SD卡?

1 个答案:

答案 0 :(得分:4)

来自this article on HTML5 Rocks

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

FileSystem API旨在允许您的应用创建和操作将在您的应用程序的使用之间保留的文件。它不能用于从它的沙箱外部公开任意文件。

或者,File API可用于从整个系统中读取(但不能修改)文件。但是,File API不能用于读取系统上的任意文件。它的用法基于HTML <input type=file>标记,用户必须明确输入要读取的文件。

以上内容适用于Android Chrome中运行的应用程序,与桌面Chrome相同,因此除非用户愿意使用输入授予对所需文件的访问权限,否则您将失去运气。但是,您提到您还尝试使用PhoneGap进行PoC。 PhoneGap File API虽然主要作为HTML5实现的包装,但有一些细微的差别,主要是因为它允许访问SD卡上的任意文件。使用API​​调用window.requestFileSystem()时,您的成功回调将有一个参数,一个FileSystem对象,其中root属性是对/ sdcard文件夹的引用。这可用于遍历您的SD卡并在其中的任何位置创建FileReaders和FileWriters。