2

Я ищу для загрузки файла из Интернета/сервера в своем ионном приложении. Я использую плагин переноса файлов, чтобы попытаться добиться того же, но файл не загружается.Невозможно скачать файл в Кордове и Ионном с FileTransfer

Я получаю обратный вызов успеха от плагина, но если я попытаюсь открыть файл из плагина fileOpener2, я получаю сообщение об ошибке, что файл не существует. Я проверил все хранилище своего телефона для файла, но его не найти. PFB код, который я использовал:

var fileTransfer = new FileTransfer(); 

var imguri = "http://cdn.wall-pix.net/albums/art-space/00030109.jpg"; 
var targetPath = cordova.file.dataDirectory + "testImage.jpg"; 
fileTransfer.download(
imguri, 
targetPath, 
function(entry) { 
    console.log("download complete - Internal URL: " + entry.toInternalURL()); 
    console.log("download complete - Full Path: " + entry.fullPath); 

          $cordovaFileOpener2.open(entry.fullPath, 'image/jpeg').then(function() { 
         // file opened successfully 
         console.log("File opened successfully!"); 
        }, function(err) { 
         // An error occurred. Show a message to the user 
         console.log(JSON.stringify(err)); 
        }); 



}, 
function(error) { 
    console.log("download error source " + error.source); 
    console.log("download error target " + error.target); 
    console.log("download error code" + error.code); 
}, 
false, 
{ 
    headers: { 
     "Authorization": "Basic dGVzdHVzZXJuYW1lOnRlc3RwYXNzd29yZA==" 
    } 
} 
); 

В $ cordovaFileOpener2.open, если я дам entry.toInternalURL в качестве параметра, я получаю эту ошибку -> Не удалось найти сконфигурированный корень, который содержит /data/data/com.echidna. foodreview/files/testImage.jpg

В $ cordovaFileOpener2.open, если я даю параметр entry.fullPath как параметр, я получаю эту ошибку -> {"status": 9, "message": "File not found"}

Из моего файлового менеджера я искал файл testImage.jpg, и файл не был найден. Это должно означать, что файл не был загружен в первую очередь, а затем как срабатывал обратный вызов успеха?

ответ

1

Проблема заключается в новых разрешениях пользователей, требуемых приложением в Android 6.0 и выше. Плагины файлов не запрашивают у пользователя доступ к хранилищу. Это должно быть сначала запрошено приложением, и это может быть обработано другим плагином. Для этого есть несколько плагинов, но я использую https://github.com/NeoLSN/cordova-plugin-android-permission, и это работает для меня!

Итак, перед загрузкой проверьте, есть ли у вас права на запись на хранение. Если вы этого не сделаете, запросите разрешения (проверка и запрос разрешений обрабатывается плагином в ссылке выше). После того, как у вас есть доступ, скачайте любой файл, который вы хотите!

Cheers!

0

вместо

file.dataDirectory 

, который хранит файл как приватным и не позволяет ваш файловый менеджер, чтобы прочитать его

использование

file.externalDataDirectory 

сохраняет файл в общественных и позволяет другим приложения, чтобы открыть его

не путайте с внешним интерфейсом ExternalDataDirecto ry as (SD-карта) использует только встроенную память вашего устройства

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