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

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

本文关键字:Abort Error 错误代码 文件 iOS 更新 Cordova 插件      更新时间:2023-09-26

我正在进行一个Cordova项目,但文件系统插件出现了一个错误。我可以在iPhone 5S模拟器(Json和jpegs)中读写得很好。但在我的iPhone 6设备和iPhone 6S模拟器上,当获取新的jpg文件时,fileSystem.getFile()函数总是给我错误代码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('');
}