我正在尝试使用Phonegap [cordova 3.3.0]在IOS上处理文件.我阅读了如何访问文件,并在电话间隔的API文档中阅读了它们.还添加了这样的插件
$cordova plugin add org.apache.cordova.file
$cordova plugin ls
[ 'org.apache.cordova.file' ]
$cordova plugin rm org.apache.cordova.file
$cordova plugin add org.apache.cordova.file-transfer
$cordova plugin ls
[ 'org.apache.cordova.file',
'org.apache.cordova.file-transfer' ]
$cordova plugin rm org.apache.cordova.file-transfer
在onDeviceReady()函数之后未调用函数gotFS(fileSystem).
这是我正在使用的代码:
function onDeviceReady() {
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
}
function gotFS(fileSystem) {
fileSystem.root.getFile("readme.txt", null, gotFileEntry, fail);
}
function gotFileEntry(fileEntry) {
fileEntry.file(gotFile, fail);
}
function gotFile(file){
readDataUrl(file);
readAsText(file);
}
function readDataUrl(file) {
var reader = new FileReader();
reader.onloadend = function(evt) {
console.log("Read as data URL");
console.log(evt.target.result);
};
reader.readAsDataURL(file);
}
function readAsText(file) {
var reader = new FileReader();
reader.onloadend = function(evt) {
console.log("Read as text");
console.log(evt.target.result);
};
reader.readAsText(file);
}
function fail(evt) {
console.log(evt.target.error.code);
}
此代码适用于android.但是对于Ios,我正在得到ReferenceError:找不到变量:LocalFileSystem
在这一行-
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
解决方法:
如果未定义LocalFileSystem,则几乎可以肯定意味着未加载插件的JavaScript代码.
您是否还在使用其他的Cordova API?您能告诉您是否正在从HTML页面加载cordova.js以及它是否可以正常运行吗?
在iOS上,针对此类问题的最佳调试技术之一是使用Safari连接到iPad(或模拟器),然后运行
location.reload()
从JavaSCript控制台.如果cordova.js遇到错误,则它可能会在加载File插件之前停止运行.
(FWIW,LocalFileSystem从来都不应该是一个真实的对象;它实际上是应该实现该窗口的接口.我将改用window.PERSISTENT以与File API规范兼容.也就是说,Cordova(出于向后兼容性)应该同时在window和LocalFileSystem上设置PERSISTENT和TEMPORARY符号.)