Сохранение файлов в Phonegap - PullRequest
1 голос
/ 19 марта 2019

Последние несколько часов я просматривал документы и все, но безуспешно ... Я хочу загрузить файл с с какого-нибудь сервера и на сохранить его на моем телефоне (каталог, в котором приложение хранит файлы, которые видны только моему приложению и удаляются при удалении приложения).Я хотел бы сохранить файл и записать в него (я сделал часть загрузки).С помощью следующего кода, когда я запускаю его, он работает и отображает текст из «файла», но когда я ищу файл с помощью некоторых приложений проводника, файл, который я «создал», не найдется.

Приветствия!

РЕДАКТИРОВАТЬ Примечания: Хорошо, теперь я даже попытался создать файл на своем телефоне с компьютера, используя соединение USB, так что я точно знаю, что файл существует... Путь к файлу, в котором я его создал с ПК:

Этот ПК \ Galaxy S7 edge \ Phone \ Android \ data \ com.phonegap.musicapp2 \ text.txt

Код ответа, который я получаю из JSON.stringify (dirEntry), выглядит следующим образом

{"isFile":false,"isDirectory":true,"name":"com.phonegap.musicapp2","fillPath":"/data/user/0/com.phonegap.musicapp2/", "filesystem":"","nativeURL":"file:///data/user/0/com.phonegap.musiapp2/"}

Поэтому, когда я запускаю код снизу, он дает мне

Ошибка из getFile: {"code": 1}

Я просмотрел документы и говорит, что код 1 означает: NOT_FOUND_ERR (http://prntscr.com/n071kx)

"Кодснизу "

function readFile(fileEntry) {

    fileEntry.file(function (file) {
        var reader = new FileReader();

        reader.onloadend = function() {
            DebugConsole.log("Successful file read: " + this.result);
            //  displayFileData(fileEntry.fullPath + ": " + this.result);
        };

        reader.readAsText(file);

    }, onErrorReadFile);
}

window.resolveLocalFileSystemURL(cordova.file.applicationStorageDirectory, function(dirEntry) {

    DebugConsole.log(JSON.stringify(dirEntry));

    dirEntry.getFile('text.txt', {create: false, exclusive: false}, function(fileEntry) {

        //writeFile(fileEntry, null, isAppend);
        readFile(fileEntry);

    }, function(e) {

        DebugConsole.log('Error from getFile: ' + JSON.stringify(e));
    });
});

Sidenote: Приложение никогда не запрашивает разрешение на доступ к моему внутреннему хранилищу. Я зашел в Apps / myapp / permissions и показал, что у приложения нет прав доступа к хранилищу.Я включил его, но все равно не повезло.Я думаю, что мне нужно как-то запросить доступ к хранилищу из приложения, но я не могу найти способ как?

1 Ответ

0 голосов
/ 20 марта 2019

Мне удалось найти решение со следующим

window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory + "Android/data/app.name/files/", success, fail);
...