получить доступ к файлам из каталога assets / www - PullRequest
14 голосов
/ 30 ноября 2011

допустим, у меня есть файл с именем foo.html, сидящий (довольно удобно) в моем каталоге assets / www (рядом с моим index.html).

Я хочу скопировать этот файл вдругое место на устройстве.Мой первый подход window.resolveLocalFileSystemURI("foo.html", cool(), notCool()); не работает.Также с префиксом вроде www / он не будет.

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

edit: Хорошо, теперь у нас есть вызов, подобный этому

window.resolveLocalFileSystemURI("file:///android_asset",
  function(entry){
    console.log(entry.fullPath);},
  function(evt){
    console.log(evt.code);}
);

но мы получаем ошибку с code: undefined (Phonegap v1.2) и code: 1 с v1.0 (код 1 = файл не найден?!)

Ответы [ 3 ]

14 голосов
/ 23 января 2012

Вы не можете делать то, что хотите.Файлы в каталоге активов технически отсутствуют в файловой системе, поэтому они не доступны через File API.Это означает, что вызов window.resolveLocalFileSystemURI() не вернет вам FileEntry.

Лучшее, на что вы можете надеяться, - это получить доступ к этим файлам через XHR.Если они основаны на тексте, вы всегда можете взять результат XHR и записать его в файловую систему, используя FileWriter.Я написал сообщение в блоге, в котором показано, как получить файл из каталога ресурсов с помощью XHR.

http://simonmacdonald.blogspot.com/2011/12/on-fourth-day-of-phonegapping-creating.html

11 голосов
/ 30 ноября 2011

Вы должны иметь доступ к файлу следующим образом:

window.resolveLocalFileSystemURI("file:///android_asset/www/foo.html", onResolveSuccess, onFail);

Затем вы можете использовать File API - FileEntry.copyTo или FileEntry.moveTo, чтобы фактически выполнить действие. Примечание. На самом деле вы не можете писать в папку assset / www, только на SD-карту.

Надеюсь, это поможет

1 голос
/ 23 декабря 2011

Леон - «Вы не можете записывать в папку assset / www, только на SD-карту». Первая часть верна, вы не можете записать в путь к ресурсу / www. Но, если приложение установлено на устройстве, вы можете создавать и записывать в файл, и он создается в корне Android. Если приложение установлено на SD-карту, этот файл создается в корне SD-карты. Созданные таким образом файлы НЕ удаляются и не изменяются при очистке пользовательских данных для приложения и НЕ удаляются при удалении приложения.

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