Ioni c 4 кордова-плагин-файл для чтения приложения JSON файл не работает - PullRequest
0 голосов
/ 16 января 2020

Я пытаюсь прочитать файл JSON из постоянного хранилища в каталоге Documents. Это небольшой JSON файл без разрывов строк, который проходит валидатор JSON lint. Я успешно могу: resolDirectoryUrl, getFile, get fileEntry и создать fileObject. Я включаю то, что читают журналы консоли ниже. Я вижу все метаданные fileObject. Я могу видеть изменение размера, если я уберу содержание JSON для тестирования.

Я не могу заставить программу чтения файлов читать AsText. Возвращает ошибку: 5 и результат ноль. Когда я пытаюсь просто запустить this._file.readAsText, я получаю только нулевое значение.

Я могу использовать readAsDataURL как из File Reader, так и просто из this._file.readAsDataURL(). Он успешно возвращает блоб base64. Я был счастлив получить это, но когда я пытаюсь декодировать его, используя const decodedString = atob(b64str);, это тоже не получается. В начале строки 2 плохих символа, которые взламывают sh приложение. "ÿþ"

При тестировании строки base64, которую я возвращаю в https://www.base64decode.org/, это дает мне тот же результат, как если бы я декодировал что-то отличное от UTF-8 и ASCII.

Я бы предпочел, чтобы readAsText работал, но был бы счастлив получить правильное декодирование base64 как запасной вариант. Любая помощь приветствуется. Спасибо!


this._file.resolveDirectoryUrl(this.appFileDirectory)
    .then((dir) => {
        console.log('resolveDirectoryUrl.dir: ' + JSON.stringify(dir));
        //{"isFile":false,"isDirectory":true,"name":"","fullPath":"/","filesystem":"<FileSystem: persistent>","nativeURL":"file:///Users/MYNAME/Library/Developer/CoreSimulator/Devices/B2DE2FCD-35AA-43D9-93A7-0CB13542826C/data/Containers/Data/Application/CDC2636D-9D4A-40AB-8BFC-C987124556F0/Documents/"}

        this._file.getFile(dir, fileName, {create: false})
            .then((fileEntry) => {
                console.log('fileEntry.toURL: ' + fileEntry.toURL());
                //file:///Users/MYNAME/Library/Developer/CoreSimulator/Devices/B2DE2FCD-35AA-43D9-93A7-0CB13542826C/data/Containers/Data/Application/CDC2636D-9D4A-40AB-8BFC-C987124556F0/Documents/bookmarks.json
                console.log('fileEntry: ' + JSON.stringify(fileEntry));
                //{"isFile":true,"isDirectory":false,"name":"bookmarks.json","fullPath":"/bookmarks.json","filesystem":"<FileSystem: persistent>","nativeURL":"file:///Users/MYNAME/Library/Developer/CoreSimulator/Devices/B2DE2FCD-35AA-43D9-93A7-0CB13542826C/data/Containers/Data/Application/CDC2636D-9D4A-40AB-8BFC-C987124556F0/Documents/bookmarks.json"}
                fileEntry.file((fileObject) =>{
                    console.log('got fileObject:: ');
                    console.log(fileObject);
                    //{"name":"bookmarks.json","localURL":"cdvfile://localhost/persistent/bookmarks.json","type":"application/json","lastModified":1578936573302.0479,"lastModifiedDate":1578936573302.0479,"size":15994,"start":0,"end":15994}

                    var reader = new FileReader();
                    reader.onloadstart = function(evt) {
                        console.log("reader.onloadstart");
                        console.log(evt);
                        //{"type":"loadstart","bubbles":false,"cancelBubble":false,"cancelable":false,"lengthComputable":false,"loaded":0,"total":0,"target":{"_readyState":1,"_error":null,"_result":null,"_progress":0,"_localURL":"cdvfile://localhost/persistent/bookmarks.json","_realReader":{"__zone_symbol__originalInstance":{}}}}
                    };
                    reader.onloadend = function(evt) {
                        console.log("reader.onloadend:");
                        console.log(evt);
                        //{"type":"loadend","bubbles":false,"cancelBubble":false,"cancelable":false,"lengthComputable":false,"loaded":0,"total":0,"target":{"_readyState":2,"_error":{"code":5},"_result":null,"_progress":0,"_localURL":"cdvfile://localhost/persistent/bookmarks.json","_realReader":{"__zone_symbol__originalInstance":{}}}}
                        console.log("reader.result:");
                        console.log(this.result);
                        //null
                    };
                    reader.onprogress = function (evt) {
                        console.log('reader.onprogress: ');
                        console.log(evt);
                    };
                    reader.onerror = function (err) {
                        console.log('reader.Err:: ');
                        console.log(err);
                //{"type":"error","bubbles":false,"cancelBubble":false,"cancelable":false,"lengthComputable":false,"loaded":0,"total":0,"target":{"_readyState":2,"_error":{"code":5},"_result":null,"_progress":0,"_localURL":"cdvfile://localhost/persistent/bookmarks.json","_realReader":{"__zone_symbol__originalInstance":{}}}}
                    };
                    reader.readAsText(fileObject);

                }, (err) => {
                    console.log('fileEntry err: ');
                    console.log(err);
                })

            }).catch((err) => {
                console.log('getFile err: ');
                console.log(err);
            });
    });


this._file.readAsText(docsDir, fileName)
    .then(fileStr => {
        console.log('readAsText.fileStr: ');
        console.log(fileStr);//null
    }).catch(err => {
        console.log('readAsText.err: ');
        console.log(err);
    });


Ionic:

   Ionic CLI                     : 5.4.2 (/usr/local/lib/node_modules/ionic)
   Ionic Framework               : @ionic/angular 4.11.8
   @angular-devkit/build-angular : 0.801.3
   @angular-devkit/schematics    : 8.1.3
   @angular/cli                  : 8.1.3
   @ionic/angular-toolkit        : 2.1.1

Cordova:

   Cordova CLI       : 8.1.2 (cordova-lib@8.1.1)
   Cordova Platforms : ios 5.0.1
   Cordova Plugins   : cordova-plugin-ionic-keyboard 2.2.0, cordova-plugin-ionic-webview 4.1.3, (and 5 other plugins)

cordova-plugin-file 6.0.2 "File"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...