我正在尝试使用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
函数gotFS(fileSystem)在onDeviceReady()函数之后没有调用。
这是我正在使用的代码:
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);
答案 0 :(得分:2)
如果没有定义LocalFileSystem,那几乎可以肯定意味着没有加载插件的JavaScript代码。
您使用的是其他任何Cordova API吗?你能告诉我们你的HTML页面是否正在加载cordova.js以及它是否正确运行?
在iOS上,解决此类问题的最佳调试方法之一是使用Safari连接到iPad(或模拟器),然后运行
location.reload()
来自JavaSCript控制台。如果cordova.js遇到错误,那么它可能会在加载File插件之前停止运行。
(FWIW,LocalFileSystem从来不应该是一个真正的对象;它实际上是一个window
应该实现的接口。我将切换到使用window.PERSISTENT
来兼容File API规范。也就是说,Cordova(为了向后兼容)应该在window
和LocalFileSystem
上设置PERSISTENT和TEMPORARY符号。)
答案 1 :(得分:2)
Phonegap 3.3.0的Filesystem有一种新方法。如果您一直使用fullpath进行输入,则需要将其替换为toURL()。
同样在您的config.xml文件中,您必须添加
<preference name="iosPersistentFileLocation" value="Compatibility" />
您最好的选择是查看此链接https://github.com/apache/cordova-plugin-file/blob/master/doc/index.md
让这些改变对我有用。希望它也适合你。
答案 2 :(得分:0)
除了科尔多瓦。我还安装了phonegap like bellow command。并制作新的应用程序并安装所有插件。现在文件读写程序正在运行。 谢谢你的帮助。
$ sudo npm install -g phonegap
$ phonegap create my-app
$ cd my-app