Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Phonegap 3.3.0 for ios访问文件_Javascript_Ios_Cordova - Fatal编程技术网

Javascript 使用Phonegap 3.3.0 for ios访问文件

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

我正在尝试使用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 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。