我正在开发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('');
}
答案 0 :(得分:0)
好的,我找到了解决方案。 我必须先创建目录“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('');
}