2016-05-12 2 views
0

Я использую эмуляцию андроидной связи 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?

Заранее спасибо.

+0

3mb - путь к большому для dataURL, работает ли меньшее изображение? Я бы также 'console.log (e)' в обработчике ошибок, чтобы получить детали. – dandavis

+0

@ dandavis план должен был использовать этот метод, чтобы в конечном итоге отправить до 25 мб zip-файлов - мне нужно будет изучить максимальный размер dataURL. Я не считал, что может быть максимальная длина потока данных. Я продолжаю получать «e» undefined, поэтому я использовал код error.code и просматриваю его в Интернете. Я новичок в этом языке. –

+0

Я не думал, что размер будет проблемой, основанной на этих статьях: [ссылка] (http://stackoverflow.com/questions/20706418/are-there-file-size-limitations-when-using-javascript -filereader-api) –

ответ

0

Выяснил это. Это была ошибка с dunce - права на изображение были изменены, когда я перезаписал файл при отладке чего-то другого.

+0

какое разрешение вы дали. пожалуйста, объясните ... Я получаю доступ к одному и тому же изображению из галереи, я могу получить к нему доступ, но то же изображение, к которому я обращаюсь, из файлового менеджера, это дает мне 'reader.result' = null – Pritish

Смежные вопросы