我正在尝试创建一个能够访问大量文件的 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?
最佳答案
来自 this article on HTML5 Rocks :
重要的是要记住这个文件系统是沙盒的,这意味着一个网络应用程序无法访问另一个应用程序的文件。这也意味着您无法将文件读/写到用户硬盘驱动器上的任意文件夹(例如“我的图片”、“我的文档”等)。
FileSystem API 旨在让您的应用程序创建和操作文件,这些文件将在您的应用程序的使用之间持续存在。它不能用于从其沙箱外部公开任意文件。
或者,File API可用于读取(但不能修改)整个系统中的文件。但是,File API 不能用于读取系统上的任意文件。它的用法基于 HTMLs <input type=file>
标签,用户必须明确输入要读取的文件。
以上内容适用于在 Android Chrome 中运行的应用程序,就像在桌面版 Chrome 中一样,因此除非用户愿意使用输入来授予对所需文件的访问权限,否则你就不走运了。但是,您提到您还尝试使用 PhoneGap 进行 PoC。 PhoneGap File API ,虽然主要作为 HTML5 实现的包装器,但有一些细微的差别,主要是它允许访问 SD 卡上的任意文件。使用 API 调用时 window.requestFileSystem()
,你的成功回调将有一个参数,一个 FileSystem对象,其中 root
属性是对/sdcard 文件夹的引用。这可用于遍历您的 SD 卡并在其中的任何位置创建 FileReader 和 FileWriters。
关于android - HTML5 FileSystem API Android Chrome 访问 sdcard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15483936/