2013-04-17 10 views
6

私は、以下に示すこのファイルシステムのURIを解決しようとしています:PhoneGapのresolveLocalFileSystemURI

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

任意の体がどのようにPhoneGapの中でこのURIを解決し、以下の示す方法を使用してファイルエントリを得るために私に言うことはできますか?

window.resolveLocalFileSystemURI(Url, resOnSuccess, resOnError); 

uriの前に "file://"または "//"を追加しようとしましたが、動作しません。

ありがとうございました。

答えて

13

PhoneGapでは、[APP HASH]/Documentsまたは[APP HASH]/tmpフォルダ以外のファイルを読むことはできません。これらのフォルダのいずれかのデータでアプリケーションを初期化する方法が見つからない限り、データを別の方法で取得する必要があります。私は以下のコードが動作することを発見しました。基本的には、あなたの一時フォルダにローカルファイルをダウンロードし、あなたにファイルエントリを与えます。

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

ありがとうございました。このことは私を狂わせてしまい、あなたのソリューションは完璧に動作します。そして、別のトリックは、uriがfile:/// var/blablablaから始めるべきであるということです – esdotzed

+0

うまくいった!私は通常、ファイル:///を持っているlocation.hrefで始まるパスを構築します。そうすれば、私は全体のパスをハードコードする必要はありません。 –

+0

素晴らしい!知らせてくれてありがとうございます。 – esdotzed