У меня есть приложение Cordova, где я загружаю файл PDF, сохраняю его локально и затем открываю.
Он отлично работает в Android, но iOS выдает сообщение в окне вывода, что записал файл, но не может открыть файл с нулевым значением.
Изначально я использовал cordova.file.externalRootDirectory, который работал в Android, но не в iOS.
Я изменил это на cordova.file.dataDirectory, который снова работает в Android, но не в iOS.
В соответствии с результатами моих поисков, использование cordova.file.dataDirectory должно работать на обеих платформах.
Я пытался добавить
в файл конфигурации, но это не имеет значения.
var contentType = "application/pdf";
var folderpath = cordova.file.dataDirectory;
var filename = filedate + ".pdf";
savebase64AsPDF(folderpath,filename,data,contentType)
function b64toBlob(b64Data, contentType, sliceSize) {
contentType = contentType || '';
sliceSize = sliceSize || 512;
var byteCharacters = atob(b64Data);
var byteArrays = [];
for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {
var slice = byteCharacters.slice(offset, offset + sliceSize);
var byteNumbers = new Array(slice.length);
for (var i = 0; i < slice.length; i++) {
byteNumbers[i] = slice.charCodeAt(i);
}
var byteArray = new Uint8Array(byteNumbers);
byteArrays.push(byteArray);
}
var blob = new Blob(byteArrays, {type: contentType});
return blob;
}
function savebase64AsPDF(folderpath,filename,content,contentType){
// Convert the base64 string in a Blob
var DataBlob = b64toBlob(content,contentType);
console.log("Starting to write the file :3");
window.resolveLocalFileSystemURL(folderpath, function(dir) {
console.log("Access to the directory granted succesfully");
dir.getFile(filename, {create:true}, function(file) {
console.log("File created succesfully.");
file.createWriter(function(fileWriter) {
console.log("Writing content to file");
fileWriter.write(DataBlob);
console.log("Finished writing file.");
//open file
cordova.plugins.fileOpener2.open(folderpath + filename, 'application/pdf');
}, function(){
alert('Unable to save file in path '+ folderpath);
});
});
});
}
Ожидаемый (и желаемый) результат - это то, что происходит на Android, когда файл сохраняется локально, а затем открывается в программе чтения PDF по умолчанию.
Лучшее, что я могу получить от iOS, - это сообщение в окне вывода xcode, в котором говорится, что он "завершил запись файла", а затем еще одна строка, в которой говорится, что "поиск файла в (null)"
Нет исключений или ошибок, просто ничего.
Любая помощь будет принята с благодарностью.