Я использую эмуляцию андроидной связи 9 для тестирования.Кордова fileReader работает для текста, но возвращает null для jpgs
я запускаю этот код для текста, и она работает:
var filePath = cordova.file.dataDirectory + "files/newFile.txt";
window.resolveLocalFileSystemURL(filePath, gotFileEntry, fail);
function gotFileEntry(fileEntry) {
console.log("gotFileEntry: "+fileEntry.name); //"newFile.txt"
console.log("fileEntry fullpath: "+fileEntry.fullPath); //"/newFile.txt" - cause for concern?
fileEntry.file(gotFile, fail);
}
function gotFile(file){
console.log("Got the File");
console.log("Type: " + file.type); //text/plain
console.log("Path: " + file.fullPath); //undefined
//path wasn't defined, manually set it
file.fullPath = fullPath = cordova.file.dataDirectory + 'files/' + file.name;
console.log("Path: " + file.fullPath); //"file:///data/data/com.ionicframework.myproject123456/files/files/newFile.txt"
console.log("Bytes: " + file.size); //~14 bytes
var reader = new FileReader();
reader.onloadend = function(evt) {
console.log('Reader status "onloadend": '+reader.readyState); //2 (a.k.a loaded)
console.log('Result: '+evt.target.result); //"data:text/plain;base64,c26tZSBmaWx1IGrhdGE=" (success)
console.log('Result: '+reader.result); //"data:text/plain;base64,c26tZSBmaWx1IGrhdGE=" (success)
};
reader.onerror = function(e) {
console.log('Error.code: '+reader.error.code) //unused
console.log('Error.message: '+reader.error.message) //unused
}
console.log("Reader status before: "+reader.readyState); //0
reader.readAsDataURL(file);
console.log("Reader status after: "+reader.readyState); //1
}
Так я включаю его, чтобы попытаться использовать картину. То же код, переключение «newFile.txt» для «mypicture.jpg»:
var filePath = cordova.file.dataDirectory + "files/mypicture.jpg";
window.resolveLocalFileSystemURL(filePath, gotFileEntry, fail);
function gotFileEntry(fileEntry) {
console.log("gotFileEntry: "+fileEntry.name); //"mypicture.jpg"
console.log("fileEntry fullpath: "+fileEntry.fullPath); //"/mypicture.jpg" - cause for concern?
fileEntry.file(gotFile, fail);
}
function gotFile(file){
console.log("Got the File");
console.log("Type: " + file.type); //image/jpeg
console.log("Path: " + file.fullPath); //undefined
//path wasn't defined, manually set it
file.fullPath = fullPath = cordova.file.dataDirectory + 'files/' + file.name;
console.log("Path: " + file.fullPath); //"file:///data/data/com.ionicframework.myproject123456/files/files/mypicture.jpg"
console.log("Bytes: " + file.size); //~3 mega bytes
var reader = new FileReader();
reader.onloadend = function(evt) {
console.log('Reader status "onloadend": '+reader.readyState); //2 (a.k.a loaded)
console.log('Result: '+evt.target.result); //"null" (FAILURE)
console.log('Result: '+reader.result); //"null" (FAILURE)
};
reader.onerror = function(e) {
console.log('Error.code: '+reader.error.code) //1 (NOT_FOUND_ERR?)
console.log('Error.message: '+reader.error.message) //undefined
}
console.log("Reader status before: "+reader.readyState); //0
reader.readAsDataURL(file);
console.log("Reader status after: "+reader.readyState); //1
}
Использование «ADB оболочки» Я могу показать каталог, в котором расположены эти файлы. Оба файла есть. Разрешения и владелец обоих файлов одинаковы.
Моя конечная цель состоит в том, чтобы читать в файле в качестве базового потока данных base64 и добавлять его в виде прикрепленного файла к электронному письму с помощью плагина mailComposer от katzer. Я надеюсь, что я тоже могу использовать этот метод для развертывания iOS.
Как я читаю этот файл изображения неправильно - почему reader.readyState возвращает null?
Заранее спасибо.
3mb - путь к большому для dataURL, работает ли меньшее изображение? Я бы также 'console.log (e)' в обработчике ошибок, чтобы получить детали. – dandavis
@ dandavis план должен был использовать этот метод, чтобы в конечном итоге отправить до 25 мб zip-файлов - мне нужно будет изучить максимальный размер dataURL. Я не считал, что может быть максимальная длина потока данных. Я продолжаю получать «e» undefined, поэтому я использовал код error.code и просматриваю его в Интернете. Я новичок в этом языке. –
Я не думал, что размер будет проблемой, основанной на этих статьях: [ссылка] (http://stackoverflow.com/questions/20706418/are-there-file-size-limitations-when-using-javascript -filereader-api) –