2016-04-18 16 views
0

アプリを持っていて、特定のユーザーがダウンロードしたキャッシュされた画像を削除したいです。user1をダウンロードしてログアウトしてからuser2にログインして画像をダウンロードしてください。 User2には、キャッシュされた画像やダウンロードした画像が表示されないようにしてください。user1モバイルアプリからキャッシュされた画像を削除する

キャッシュされた画像は、以前ダウンロードしたすべての画像を示しています。

キャッシュされた画像をログアウトした後にダウンロードします。

if(ionic.Platform.isAndroid()){ 
             localPath = cordova.file.externalCacheDirectory; 
            }else{ 
             localPath = cordova.file.cacheDirectory; 
            } 
            localPath = localPath + downloadFileName.trim().replace(/\s+/g, '-') + ext; 

            var ft = new FileTransfer(); 
            ft.download(downloadLink, localPath, function(entry) { 
             $ionicLoading.hide(); 
             console.log("Downloading report on path - " + entry.toURL()); 
             cordova.plugins.fileOpener2.open(entry.toURL(), downloadFileMimeType, { 
              error : function(e) { 
               console.log('Error status: ' + e.status + ' - Error message: ' + e.message); 
              }, 
              success : function(fileEntry) { 
               console.log('File opened successfully'); 
              } 

             }); 
            }, function fail(error) { 
             $ionicLoading.hide(); 
             console.log("Error while downloading report with error code - " + error.code); 
            }, true, options); 
           } 
+0

あなたがこれまでにしようとしているものをご提供ください。コードを投稿して、コードに特定の問題を表示してください。 –

+0

コードが添付されています... –

答えて

1

それは良い質問です:あなたはng-srcを使用している場合、実際に

、その後、イオンではなく、ブラウザ自体はHTML image src属性に基づいて、デフォルトではそれらの画像をキャッシュします。これはデフォルトのブラウザ機能です。

あなたはこの問題にアプローチすることができ、2つの方法があります。

1)画像キャッシュしない:画像をキャッシュさせないために
を、あなたは画像に付加番号を変更する必要があります主にバージョン番号とみなされます。ブラウザのバージョンを古いバージョンにする。

<img ng-src='api/image/new.png?{{getTimeStamp()}}' ng-click='editImage();'/> 

タイムスタンプをここに追加すると、ブラウザは常にサーバーから最新のイメージを取得するように頼みます。

2)再バージョンログアウト

上の画像はapp.run()方法で画像版の$ rootScope変数を作成します。同様に:

app.run(function($rootScope) { 
    $rootScope.imgVersion = 0; 
}) 

$rootScopeとして、ユーザーがログアウトしたときに全体のアプリは、この変更の更新を取得したいので、理由。

として画像SRCにaparameterとしてこの変数を使用します。だからあなたの場合には、ユーザーがログアウトしたすぐにバージョン番号を変更することができます

<img ng-src='api/image/new.png?{{imgVersion}}' ng-click='editImage();'/> 

app.controller('LogoutCtrl', function(){ 
    //Your log out code here 
    $rootScope.imgVersion += 1; //Incrementing the version by 1 
}); 

ワーキング:初めに
アプリがインストールされ、アプリが画像new.png?0をフェッチしようとしたら、それはキャッシュされたサーバーと からフェッチされます。 new.png?0としてキャッシュされます。今度は、アプリがnew.png?0を必要とするときは、それは表示のためにキャッシュから取り上げられる。ユーザーがログアウトすると、 の値がインクリメントされ、現在有効になっていますが、 はキャッシュに存在しないnew.png?1を取得するため、 は再びそれを新たにフェッチしますそれはそれをキャッシュします。あなたのイメージ自体は本質的に変更されています。

:)

参考文献:
[1] https://forum.ionicframework.com/t/using-imagecache-in-ionic/4646/12
[2] https://stackoverflow.com/a/19142498/1904479

+0

返信ありがとうございます。コードが添付されています。 –

関連する問題