19186


monacaでアプリ制作中です。  
さて、File API の fileTransfer.download メソッドを利用して、  
必要な画像素材を起動後にダウンロード取得する仕組みを考えております。

fileTransfer.download については問題なく利用できることを確認済みなのですが、  
これだけでは、毎回起動する度に、既に取得している画像素材まで再度ダウンロード(上書き)を  
してしまうため、ファイル(画像素材)の存在確認をして、無いときだけダウンロードする挙動が  
出来ればと思ったのですが、うまい方法が思い付きません。

参考までに、上手く動作しませんが、当方の例は以下のとおりです。

[code]

    function onSuccess(){
        //成功＝画像素材へのローカルパスが有効＝既にダウンロード済み＝何もしない
    }
    
    function onError(){
        //失敗＝画像素材へのローカルパスが無効＝まだダウンロードしていない＝ダウンロードする
        var fileTransfer = new FileTransfer();
        fileTransfer.download(インターネット上に配置した画像素材へのURL,画像素材へのローカルパス,function(entry){
            console.log("download complete: "+entry.toInternalURL());
        });
    }
    
    //画像素材へのローカルパスを渡し、有効(存在している)ならonSuccess、無効(存在しない)ならonError
    window.resolveLocalFileSystemURL(画像素材へのローカルパス,onSuccess,onError);
    
[/code]

複数の画像素材の有無を確認するため、上記処理をforでループさせています。

同期処理・非同期処理の違いが関係しそうなのは何となくつかめているのですが、  
恥ずかしながら、まだわからないことも多く……。

どなたか方法をご存知の方がおりましたら、ご教授のほどお願い申し上げます。


CC BY-SA 3.0
2015-11-21T13:33:00.583
19129
2015-11-23T04:27:48.867
2015-11-22T11:56:47.260
13357
13357
question
monaca
monacaアプリでローカルファイルの存在確認をして、存在しない時だけダウンロードする方法


画像であれば、こういうのはどうでしょうか？  
画像のロードに失敗したらダウンロード

[code]

    //FILE_PATH = ローカルファイルパス
    //IMG_URI   = Web上の画像URL
    var target = new Image();
    ‌target.onerror = function() {
        var fileTransfer = new FileTransfer();
        fileTransfer.download(IMG_URI,FILE_PATH,function(entry){
            console.log("download complete: "+entry.toInternalURL());
        });
    };
    target.src = FILE_PATH;
    
[/code]


CC BY-SA 3.0
2015-11-23T04:27:48.867
19186
2015-11-23T04:27:48.867
7676
19129
answer