较新的 iOS 设备上的 Cordova 文件插件错误代码 3 (Abort_Error)

Cordova File Plugin Error Code 3 (Abort_Error) on newer iOS Devices

我正在处理一个 Cordova 项目,但遇到了文件系统插件的错误。我可以在 iPhone 5S 模拟器(Json 和 jpegs)中正常读写。但是在我的 iPhone 6 设备和 iPhone 6S 模拟器上,fileSystem.getFile() 函数在获取新的 jpg 文件时总是给我错误代码 3。 Json 以某种方式工作正常。有什么想法吗?

self.savePicture = function (fileURI, callback) {
    if(self.canSave) {
        window.resolveLocalFileSystemURL(self.dataDirectory, function(fileSystem) {
            var d = new Date().getTime();
            var folder = "pictures/";
            var filename = "pic_"+d + ".jpg";
            fileSystem.getFile(folder+filename, { create: true }, function(file) {
                file.createWriter(function(writer) {
                    writer.write(self.b64toBlob(fileURI, 'data:image/jpeg;base64,'));
                    app.log('saving ' +  filename + ' successful', 'data');
                    callback(filename);
                }, function() {
                    app.log('saving ' + filename + ' failed', 'data');
                });
            }, function() {
                app.log('getting File failed','data');
            });
        }, function() {
            app.log('resolvingLocalFileSystem failed','data');
        });
    }else{
        app.log('device cant save!', 'data');
    }
    callback('');
}

好的,我找到了解决方案。 我必须先创建目录 "pictures/",然后再创建文件。它现在适用于所有设备。 但我无法解释为什么上面的代码可以在某些设备上运行..

self.savePicture = function (fileURI, callback) {
    if(self.canSave) {
        window.resolveLocalFileSystemURL(self.dataDirectory, function(fileSystem) {
            var d = new Date().getTime();
            var folder = "pictures/";
            var filename = "pic_"+d + ".jpg";
            fileSystem.getDirectory(folder, { create: true }, function(dir) {
                dir.getFile(filename, { create: true }, function(file) {
                    file.createWriter(function(writer) {
                        writer.write(self.b64toBlob(fileURI, 'data:image/jpeg;base64,'));
                        app.log('saving ' +  filename + ' successful', 'data');
                        callback(filename);
                    }, function() {
                        app.log('saving ' + filename + ' failed', 'data');
                    });
                }, function() {
                    app.log('getting File failed','data');
                });
            }, function(){
                app.log('getting Directory failed','data');
            });
        }, function() {
            app.log('resolvingLocalFileSystem failed','data');
        });
    }else{
        app.log('device cant save!', 'data');
    }
    callback('');
}