较新的 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('');
}
我正在处理一个 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('');
}