4

JSONを使用してサーバーからデータをインポートするために使用されるPhoneGap iosアプリを構築しています。このデータには画像URLが含まれています。アプリケーションがインターネットに接続されていないときに使用するために、ローカルストレージにデータをキャッシュするためにすでに使用していますが、画像をキャッシュする最良の方法は何かという懸念があります。

画像を data-uri に変換して、IOS データベースに保存することを考えていました。

この解決策が実行可能かどうか、または他に最適な解決策があるかどうかアドバイスをお願いします。

4

2 に答える 2

3

このブログ投稿は、あなたを正しい軌道に乗せるはずですhttps://www.raymondcamden.com/2012/01/19/Downloading-files-to-a-PhoneGap-application-Part-1/

于 2013-07-18T17:23:16.717 に答える
1

Phonegap API には、リモート サーバーからダウンロードした画像を保存するために使用できるファイル システムがあります。

ファイルはアプリの Documents フォルダーに保存されるため、そのパス (インストールごとに異なります) を見つけて、ファイルをローカルに保存し、そのパスを localstorage に保存する必要があります。

コード スニペットを次に示します。まず、ローカル パスをワークアウトするために、dummy.html ファイルを作成して保存します。次に、ファイルをダウンロードします。

function downloadFile(webURL,webFilename){
    window.requestFileSystem(
                             LocalFileSystem.PERSISTENT, 0,
                             function onFileSystemSuccess(fileSystem) {
                             fileSystem.root.getFile(
                                                     "dummy.html", {create: true, exclusive: false},
                                                     function gotFileEntry(fileEntry){
                                                     var sPath = fileEntry.fullPath.replace("dummy.html","");
                                                     var fileTransfer = new FileTransfer();
                                                     fileEntry.remove();

                                                     fileTransfer.onprogress = function(result){
                                                     var percent =  result.loaded / result.total * 100;
                                                     percent = Math.round(percent);
                                                     console.log('Downloaded:  ' + percent + '%');
                                                     };

                                                     fileTransfer.download(
                                                                           webURL,
                                                                           sPath + webFilename,
                                                                           function(theFile) {
                                                                           console.log("download complete: " + theFile.toURL());
                                                                           showLink(theFile.toURL());
                                                                           },
                                                                           function(error) {
                                                                           console.log("download error source " + error.source);
                                                                           console.log("download error target " + error.target);
                                                                           console.log("upload error code: " + error.code);
                                                                           navigator.notification.alert('Seems to be an error downloading this background. Try again later.', null, 'Error', 'OK');
                                                                           }
                                                                           );
                                                     },
                                                     fail);
                             },
                             fail);

}

function showLink(localurl){
    console.log(localurl);
}
于 2013-04-26T11:42:49.247 に答える