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 版中未定义的主要内容,如果未能解决你的问题,请参考以下文章

requestFileSystem 永远不会在 iOS 上返回 Cordova 3.4

File System 定额(配额查询)

使用PhoneGap创建文件

Cordova getDirectory 返回错误代码

PhoneGap 检查文件是不是存在

Filetransfer.download 在某些手机中无法正常工作