Cordova-plugin-file getFile / getDirectory没有回调火,谁能帮帮我

时间:2017-04-25 09:24:41

标签: javascript ios cordova cordova-plugin-file

我发现文件插件无法正常工作。

我的功能如下:

function (filename, fileObj, succCallback) {
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fs) {
        fs.root.getFile(filename, {create: true, exclusive: false}, function(fileEntry){
            fileEntry.file(function (file) {
                var reader = new FileReader();
                reader.onloadend = function() {
                    if(typeof succCallback === 'function') {
                        succCallback(this.result);
                    }
                };
                reader.readAsText(file);
            }, myfile.errorHandler);
        }, errorHandler);
    }, errorHandler);
}

该功能执行" window.requestFileSystem" succ,但fs.root.getFile不会触发succ / fail函数。 我尝试调试" CDVFile.m",我发现Objective-C代码已被执行。

" CDVFile.m"中的getFile:

- (void)getFile:(CDVInvokedUrlCommand*)command
{
    NSString* baseURIstr = [command argumentAtIndex:0];
    CDVFilesystemURL* baseURI = [self fileSystemURLforArg:baseURIstr];
    NSString* requestedPath = [command argumentAtIndex:1];
    NSDictionary* options = [command argumentAtIndex:2 withDefault:nil];

    NSObject<CDVFileSystem> *fs = [self filesystemForURL:baseURI];
    CDVPluginResult* result = [fs getFileForURL:baseURI requestedPath:requestedPath options:options];


    [self.commandDelegate sendPluginResult:result callbackId:command.callbackId];
}

如上所述,文件插件(源代码&#34; DirectoryEntry.js&#34;)succCallback(func win)没有激发,也没有failCallback(func失败)。 &#34; DirectoryEntry.js&#34;:

DirectoryEntry.prototype.getFile = function(path, options, successCallback, errorCallback) {
    argscheck.checkArgs('sOFF', 'DirectoryEntry.getFile', arguments);
    var fs = this.filesystem;
    var win = successCallback && function(result) {
        var FileEntry = require('./FileEntry');
        var entry = new FileEntry(result.name, result.fullPath, fs, result.nativeURL);
        successCallback(entry);
    };
    var fail = errorCallback && function(code) {
        errorCallback(new FileError(code));
    };
    exec(win, fail, "File", "getFile", [this.toInternalURL(), path, options]);
};

我的XCode版本:7.3(iOS SDK 9.3) 我的Cordova版本:6.5.0 cordova-plugin-file 4.3.2&#34; File&#34;

我的config.xml添加了首选项:

<preference name="iosPersistentFileLocation" value="Library" />
<preference name="iosExtraFilesystems" value="library,library-nosync,documents,documents-nosync,cache,bundle,root" />

有没有人遇到同样的问题,并解决它?或者给我一些提示,谢谢!

2017-04-27补充说明:

The debug png why no callback fired

我发现为什么没有回调被解雇。但我不知道为什么它是&#34; succss和NO_RESULT&#34; ...

1 个答案:

答案 0 :(得分:0)

前几天,我发现,因为另一个js文件发生冲突。如果我添加js文件,文件插件将无法正常工作。我别无选择,只能在iframe页面中创建js文件。它现在可以工作了。 也许你有同样的问题,希望这可以帮助别人。