Apache Cordova не може да прочете файл от основната директория

Опитвам се да прочета файл, използвайки cordova с този код. Но не мога да видя предупреждение във функцията fileSystem.root.getFile.

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0,
           function (fileSystem) { 
               alert("root name=" + fileSystem.root.name); //alert working
              //after this not working 
               var path = "index.html";
               fileSystem.root.getFile(path, null, function (fileEntry) {
                   alert('file entry');

                   fileEntry.file(gotFile, fail);

               }, fail);
           }, fail);

       function fail(error) {
           alert("File System Error:" + error.code);
       }

Получавам код за грешка 1. Използвам плъгин за хибридно приложение на Visual Studio Cordova (2013).

Решена актуализация:

Реших проблема, като отидох в моя bin -> windows phone directory. След това преименувах .xap файла на .zip, за да извлека съдържанието. Там открих, че файловете ми са правилно внедрени заедно с плъгините за cordova. Но файловете ми бяха в директория www. Така че разделих пътя и сега работи;

var path = "www/index.html"; 

Но аз наистина се чудя защо документацията на cordova не спомена това, но така или иначе го реших сега;


person Idrees Khan    schedule 19.08.2014    source източник
comment
Здравейте, можете ли да добавите платформата, където сте получили този код за грешка?   -  person Nicolas R    schedule 25.08.2014
comment
@NicolasR в Windows Phone   -  person Idrees Khan    schedule 25.08.2014
comment
Windows Phone 8? 8.1?   -  person Nicolas R    schedule 25.08.2014
comment
windows phone 8, тъй като по подразбиране приставката cordova за визуално студио стартира wp 8 симулатор, но аз внедрявам в wp8.1 все още същата грешка   -  person Idrees Khan    schedule 25.08.2014
comment
Може би можете да опитате да изброите директориите във вашето хранилище, за да сте сигурни, че наистина сте там, където мислите, че сте, както направи OP на този въпрос: stackoverflow.com/questions/24600166/ Това звучи елементарно, но с цялата част на isolatedStorage в WP, може би трябва да проверите   -  person Nicolas R    schedule 25.08.2014
comment
@NicolasR и работи в приставката за тестване на браузър Cordova Ripple. Така че предполагам, че това може да е проблемът   -  person Idrees Khan    schedule 25.08.2014
comment
Какво работи? Вашият код на въпроса? Мисля, че намерих нещо интересно в кода на приставката, но не мога да тествам в момента. В C# кода той проверява if (filePath.IndexOf("www") == 0) и ако не, връща грешката, която сте получили...   -  person Nicolas R    schedule 25.08.2014
comment
@NicolasR да, кодът ми работи в браузър, но не и в симулатор   -  person Idrees Khan    schedule 25.08.2014
comment
Можете ли да проверите в емулатора метода от въпроса, който предоставих? И също така, използвате ли PhoneGap 3.5?   -  person Nicolas R    schedule 25.08.2014
comment
@NicolasR, разбира се, че ще опитам   -  person Idrees Khan    schedule 25.08.2014
comment
Това не работеше за мен в Ripple или друг емулатор във VS2015 или в реално устройство (Windows Phone или Surface Pro).   -  person AH.    schedule 18.03.2016


Отговори (4)


Току-що публикувах отговор на подобен въпрос с пример за работещ код тук: Зареждане на масив, съхранен в текстов файл във phonegap

Мисля, че отговорът на Абишек е доста полезен между другото.

person mentat    schedule 26.08.2014
comment
Съжалявам, но... с какво вашият отговор помага тук? - person Nicolas R; 26.08.2014
comment
@NicolasR Оригиналният код на плаката не работи, изглежда, че използването на API на файла е проблематично. Дадох работещ (тестван) примерен код, който прави същото нещо по малко по-различен начин, така че предполагам, че ще помогне. Като алтернатива посочих, че отговорът на Абишек също е добър, OP имаше различен коментар под него (казвайки, че не работи), когато между другото публикувах отговора си. - person mentat; 26.08.2014
comment
@mentat, твоята връзка беше полезна, тъй като сега работи, когато посоча пътя към var path = "www/index.html";. Така че ще направя това като ваша заслуга. - person Idrees Khan; 30.08.2014

Съобщава се грешка, защото fileSystem.root.getFile не може да намери index.html на място, посочено от LocalFileSystem.PERSISTENT. Можете да влезете fileSystem.root.fullPath, за да намерите пътя, където fileSystem.root.getFile() търси във вашето устройство или система.

Вашите файлове на приложения като index.html не се съхраняват или изпускат в LocalFileSystem.PERSISTENT, освен ако не е изрично копиран там. Можете да намерите повече подробности за това къде сочи LocalFileSystem.PERSISTENT в SO въпрос Къде сочи LocalFileSystem.PERSISTENT до?

person Abhishek - MSFT    schedule 21.08.2014
comment
пълният път върна / и моят index.html също е в основната ми директория - person Idrees Khan; 22.08.2014
comment
извлякох .xap файла, моите файлове са там в папка www - person Idrees Khan; 30.08.2014

Опитвам:

var path = "./index.html";
person Brad Dean    schedule 19.08.2014

Трябва да свържете filesystem.root.name и текущия си път, за да създадете абсолютен път до местоположението на файла спрямо файловата система на телефона, след което да го прехвърлите в параметъра на пътя на fileSystem.root.getFile. В момента вашият път е незавършен. Надявам се да помогне!!

person Lakmal Caldera    schedule 30.08.2014