4

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

我使用 phonegap File API 做了一个 PoC,一切都按预期工作,我能够使用 Chrome 桌面上的 FileSystem API 产生类似的结果......

但是我面临一个严重的问题,虽然我可以在 Desktop 中访问我的文件系统,但我无法从 Android Chrome 访问 sdcard。我尝试使用这个演示:

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

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

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

4

1 回答 1

5

这篇关于 HTML5 Rocks 的文章

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

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

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

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

于 2013-03-18T20:17:54.707 回答