Javascript 使用Phonegap 3.3.0 for ios访问文件
我正在尝试使用Phonegap[cordova 3.3.0]在IOS上处理文件。我阅读了如何访问文件以及phone gap的API文档。还添加了这样的插件Javascript 使用Phonegap 3.3.0 for ios访问文件,javascript,ios,cordova,Javascript,Ios,Cordova,我正在尝试使用Phonegap[cordova 3.3.0]在IOS上处理文件。我阅读了如何访问文件以及phone gap的API文档。还添加了这样的插件 $ cordova plugin add org.apache.cordova.file $ cordova plugin ls [ 'org.apache.cordova.file' ] $ cordova plugin rm org.apache.cordova.file $ cordova plugin
$ 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(文件系统)未在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);
如果没有定义LocalFileSystem,几乎可以肯定的是,插件的JavaScript代码没有被加载 您是否正在使用其他Cordova API?您能告诉我cordova.js是否正在从您的HTML页面加载,以及它是否正确运行吗 在iOS上,解决此类问题的最佳调试技术之一是使用Safari连接到iPad(或模拟器)并运行
location.reload()
从JavaSCript控制台。如果cordova.js遇到错误,那么它可能会在加载文件插件之前停止运行
(FWIW,LocalFileSystem从来就不是一个真正的对象;它实际上是一个接口,应该实现
window
。为了与文件API规范兼容,我会改用window.PERSISTENT
。也就是说,Cordova(为了向后兼容)应在cordova旁边的窗口
和本地文件系统
)上设置持久符号和临时符号。我还安装了phonegap。并制作新的应用程序,安装所有插件。现在文件读写程序正在运行。
谢谢你的帮助
$ sudo npm install -g phonegap
$ phonegap create my-app
$ cd my-app
Phonegap 3.3.0的文件系统采用了一种新的方法。如果您一直在使用fullpath进行输入,则需要将其替换为toURL() 您还需要在config.xml文件中添加
<preference name="iosPersistentFileLocation" value="Compatibility" />
你最好的办法就是浏览这个链接
做这些改变对我来说很有用。希望它也能对您起作用。您是否真的收听deviceready事件来调用onDeviceReady函数?您是否尝试在每个步骤中添加console.log以确定调用了什么?是deviceready事件正在调用。此行有一些问题window.requestFileSystem(LocalFileSystem.PERSISTENT,0,gotFS,fail);这段代码适用于android。但是对于Ios,我得到了ReferenceError:在这一行中找不到变量:LocalFileSystem-window.requestFileSystem(LocalFileSystem.PERSISTENT,0,gotFS,fail);你们展示的关于插件安装的行包含“cordova plugin rm”,我希望你们并没有运行它。还有,您是如何启动您的项目的?是的,我没有运行cordova插件rm。作为rm for remove,所以没有运行该行。我正在用项目到设备(ipad)午餐。我正在使用cordova3.3.0。coedova.js正在正确加载,因为OnDevicerady()函数正在调用。是的,它可能会在加载文件插件之前停止运行。停止的原因可能是什么。您是否尝试过我提到的
location.reload()
技巧?如果它停止运行,那么您可以在控制台中看到错误。$sudo npm install-g phonegap用法$phonegap create my app$cd my app$phonegap run androidBeside cordova。我还安装了类似于bellow命令的phonegap。并制作新的应用程序,安装所有插件。现在文件读写程序正在运行。谢谢你的帮助sudo npm安装-g phonegap$phonegap创建我的应用程序$cd我的应用程序你从哪里获得此信息的?在官方的PhoneGap文档中,没有关于ios持久文件位置的信息。你发布的链接是404。