2013-04-17 7 views
6

Próbuję rozwiązać ten system plików URI pokazano poniżej:PhoneGap resolveLocalFileSystemURI

/var/mobile/Applications/9483756B-8D2A-42C5-8CF7-8D76AAA8FF2C/Shift.app/iqedata/5977e2e9239649d5a7e3b8a54719679f/06e2b8896e51472789fcc27575631f94.jpg 

Czy każdy podmiot mi powiedzieć jak rozwiązać ten URI PhoneGap i uzyskać FileEntry przy użyciu metody pokazano poniżej?

window.resolveLocalFileSystemURI(Url, resOnSuccess, resOnError); 

Próbowałem dodać "file: //" lub "//" przed uri, ale to nie działa.

Dzięki.

Odpowiedz

13

PhoneGap nie pozwoli Ci czytać plików poza folderami [APP HASH]/Documents lub [APP HASH]/tmp. Jeśli nie możesz znaleźć sposobu na zainicjowanie aplikacji z danymi w jednym z tych folderów, będziesz musiał uzyskać swoje dane w inny sposób. Znalazłem poniższy kod do działania. Zasadniczo pobiera plik lokalny do folderu tymczasowego i podaje wpis pliku.

window.requestFileSystem(LocalFileSystem.TEMPORARY, 0, function(fs){ 
    fs.root.getFile("temp", {create: true, exclusive: false}, 
     function(entry){ 
     fileTransfer.download(
       Url, // the filesystem uri you mentioned 
       entry.fullPath, 
       function(entry) { 
        // do what you want with the entry here 
        console.log("download complete: " + entry.fullPath); 
       }, 
       function(error) { 
        console.log("error source " + error.source); 
        console.log("error target " + error.target); 
        console.log("error code " + error.code); 
       }, 
       false, 
       null 
     ); 
    }, function(){ 
     alert("file create error"); 
    }); 
}, null); 
+0

Dziękuję bardzo. Te rzeczy doprowadziły mnie do szału, a twoje rozwiązanie działa idealnie. Inną sztuczką jest, że uri powinno zaczynać się od pliku: /// var/blablabla – esdotzed

+0

Cieszę się, że zadziałało! Zwykle tworzę ścieżki zaczynając od location.href, które ma już plik: ///. W ten sposób nie muszę twardo kodować całej ścieżki. –

+0

Świetnie! Dzięki, że dałeś mi znać. – esdotzed