window.requestFileSystem 在 3.3.0 版中未定义
Posted
技术标签:
【中文标题】window.requestFileSystem 在 3.3.0 版中未定义【英文标题】:window.requestFileSystem is undefined in ver 3.3.0 【发布时间】:2013-12-30 08:37:34 【问题描述】:我一直在我已经开发了一段时间的应用程序上使用 Cordova(与 ios)。我过去可以很好地访问文件系统。
我通过命令行界面安装了带有 Node 的 cordova 3.3.0 并添加了我需要的所有插件(几乎所有插件 - 当然包括文件)
当我列出插件时,我得到: Michaels-MacBook-Pro:hello michael$ cordova plugin ls
[ 'org.apache.cordova.battery-status',
'org.apache.cordova.console',
'org.apache.cordova.device-motion',
'org.apache.cordova.device-orientation',
'org.apache.cordova.dialogs',
'org.apache.cordova.file',
etc....']
但是,我尝试运行以下测试代码:请注意,该代码位于 index.js 文件中,该文件在 index.html 中被正确引用
Index.html 参考:
script type="text/javascript" src="cordova.js"
script type="text/javascript" src="js/index.js"
index.js:
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady()
alert("ready");
window.requestFileSystem(LocalFileSystem.PERSISTENT, 5*1024*1024, gotFS, fail);
function gotFS(fileSystem)
alert("got fs");
alert(fileSystem.root.fullPath);
我得到的只是“准备好” 如果我尝试提醒(window.requestFileSystem);我不确定。
请有人帮我解决这个问题?我看不出它为什么不能正常工作。
任何帮助将不胜感激!
亲切的问候,
迈克尔·麦克唐纳
【问题讨论】:
【参考方案1】:你添加了文件传输插件吗?
cordova plugin add org.apache.cordova.file-transfer
【讨论】:
【参考方案2】:如果您在 chrome 中测试您的应用程序,您可能必须第一次运行它以在文件系统上保留一些空间:
// Request Quota (only for File System API)
window.webkitStorageInfo.requestQuota(PERSISTENT, 1024*1024, function(grantedBytes)
window.webkitRequestFileSystem(PERSISTENT, grantedBytes, onInitFs, errorHandler);
, function(e)
console.log('Error', e);
);
更多信息https://developers.google.com/chrome/whitepapers/storage
我不确定这个解决方案是否适合你的情况,因为你说你的应用过去可以工作,但试一试。
【讨论】:
感谢 Sergio,不过我没有在 Chrome 中测试我的应用程序。我正在使用带有内置 iOS 模拟器的 xcode以上是关于window.requestFileSystem 在 3.3.0 版中未定义的主要内容,如果未能解决你的问题,请参考以下文章