使用Phonegap 3.3.0 for ios访问文件

时间:2014-01-22 12:41:02

标签: javascript ios cordova

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

3 个答案:

答案 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(为了向后兼容)应该在windowLocalFileSystem上设置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