2011-11-30 1 views
13

diciamo che ho un file chiamato foo.html seduto (abbastanza comodo) nella mia directory assets/www (accanto al mio index.html).accedere ai file dalla directory assets/www

Mi piacerebbe copiare quel file in un'altra posizione sul dispositivo. Il mio primo approccio window.resolveLocalFileSystemURI("foo.html", cool(), notCool()); non funziona. Anche con un prefisso come www/it no.

Sarebbe interessante sapere se è effettivamente possibile accedere ai file tramite PhoneGap. Non sono convinto e quindi vorrei vedere un frammento di codice su come ottenere un FileEntry per i file nella directory delle risorse - se possibile.

edit: Ok ora abbiamo un invito come questo

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

Ma abbiamo un errore con code: undefined (PhoneGap v1.2) e code: 1 con v1.0 (codice 1 = File non trovato ?!)

risposta

10

Si dovrebbe essere in grado di accedere al file in questo modo:

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

è possibile utilizzare il File API - FileEntr y.copyTo o FileEntry.moveTo per eseguire effettivamente l'azione. Nota: non è possibile scrivere nella cartella assset/www, solo su una scheda SD.

Spero che questo aiuti

+1

sembra così bello, ma non funziona: C chiama sempre il metodo fail-. Anche quando provo ad accedere al file script.js invece al mio dummy html. Inoltre ho ricontrollato le directory. L'evento di errore ha solo 1 campo e cioè il codice: non definito. – yoshi

+1

qualcosa nel tuo output logcat? – Leon

+0

la registrazione dell'evento di errore rivela solo un campo: 'codice: undefined' – yoshi

1

Leon - "non si può effettivamente scrivere nella cartella assset/www, solo per una scheda SD" La prima parte è vero, non è possibile scrivere al percorso di asset/www. Tuttavia, se l'app è installata sul dispositivo, puoi creare e scrivere su un file e verrà creata nella radice di Android. Se l'app è installata su una scheda SD, quel file viene creato nella radice della scheda SD. I file così creati NON vengono cancellati o alterati quando si cancellano i dati dell'utente per l'app e NON vengono cancellati quando l'app viene cancellata.

14

Non puoi fare quello che vuoi fare. I file nella directory delle risorse non sono tecnicamente sul file system, quindi non sono accessibili tramite l'API File. Questo significa che chiamare window.resolveLocalFileSystemURI() non ti restituirà un FileEntry.

Il meglio che si possa sperare è accedere a tali file tramite XHR. Se sono basati sul testo, puoi sempre prendere il risultato dell'XHR e scriverlo sul file system usando FileWriter. Ho scritto un post sul blog che mostra come ottenere un file dalla directory assets usando XHR.

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

+0

Non ho il codice qui al momento, ma ho praticamente raggiunto ciò che dovevo fare con la risposta accettata. "Incontrarti", Simon, ho letto molti post nei gruppi PhoneGap :) – yoshi

+0

@yoshi, scusa, ma sei riuscito ad accedere ai file delle risorse usando la risposta di Leon? O anche ottenere il percorso per loro? Stavo cercando di farlo funzionare ma non potevo! – lao

+0

lucaskoala - Eri in grado di farlo funzionare? Non sto avendo fortuna (e penso che Simon abbia ragione che non è possibile). Vedi qui: http://stackoverflow.com/questions/22948430 –