Удалить cacheDirectory кэш файловой системы Cordova ionic

Существует мобильное приложение, в котором я хочу удалить кэшированные изображения, загруженные определенным пользователем после выхода из системы. Предположим, что пользователь 1 вошел в систему и загрузил несколько изображений, а пользователь 2 вошел в систему и загрузил несколько изображений. Пользователь 2 не должен видеть загруженные изображения любого другого пользователя. .

      downloadFile : function(downloadLink, downloadFileName, downloadFileMimeType) {
                                    $ionicLoading.show({
                                        template: '<ion-spinner></ion-spinner>'
                                    });
                                    var accessToken = $window.localStorage.getItem(SYSTEM.AUTH_TOKEN);
                                    var options = {
                                        headers : {
                                            'Authorization' : 'Bearer ' + accessToken
                                        }
                                    };

                                    var ext;
                                    if (downloadFileMimeType == 'application/pdf') {
                                        ext = '.pdf';
                                    } else {
                                        ext = '.jpg';
                                    }
                                    var localPath;
                                    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);
                                }

person Amit Anand    schedule 20.04.2016    source источник


Ответы (1)


Вы можете хранить файлы, загруженные определенным пользователем, в определенной папке пользователя на устройстве и удалять их, когда другой пользователь входит в систему. В противном случае вы можете следовать некоторому соглашению об именах файлов, характерному для пользователей, при сохранении файлов в папке и удалять эти файлы, характерные для конкретного пользователя, когда другой пользователь входит в систему.
Пример фрагмента для удаления каталога и его содержимого с помощью подключаемого модуля файла Cordova выглядит следующим образом:

function clearDirectory() {
    if (ionic.Platform.isAndroid()) {
        window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory, onFileSystemDirSuccess, fail);
    } else {
        window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemDirSuccess, fail);
    }

function onFileSystemDirSuccess(fileSystem) {
    var entry = "";
    if (ionic.Platform.isAndroid()) {
        entry = fileSystem;
    } else {
        entry = fileSystem.root;
    }
    entry.getDirectory("DIRECTORY_TO_DELETE", {
            create: true,
            exclusive: false
        },
        function(entry) {
            entry.removeRecursively(function() {
                console.log("Remove Recursively Succeeded");
            }, fail);
        }, getDirFail);
}

function getDirFail(error) {
    navigator.notification.alert("Error");
};

function fail(error) {
    navigator.notification.alert("Error");
};

}

person Gandhi    schedule 20.04.2016
comment
Большое спасибо за ваш ответ. - person Amit Anand; 20.04.2016
comment
@AmitAnand Рад, что это помогло. Удачного кодирования - person Gandhi; 20.04.2016