#ionic-framework #ngcordova
#ionic-framework #ngcordova
Вопрос:
Я пробовал использовать большинство плагинов, связанных с файлами cordova, и, наконец, придумал этот код. Выдает сообщение об успешном завершении, но они не отображаются в галерее. Кто-нибудь может помочь с этим, пожалуйста?
$scope.download = function download(name, contentType, fileLInk) {
ionic.Platform.ready(function() {
var url = apiServiceBaseUri fileLInk;
var targetPath = cordova.file.dataDirectory 'myapp/' name;
var trustHosts = false;
var options = {
headers: {
'Authorization': tokenType ' ' accessToken
}
};
$cordovaFileTransfer.download(url, targetPath, options, trustHosts)
.then(function(result) {
var alertPopup = $ionicPopup.alert({
title: 'File has been downloaded',
});
$ionicListDelegate.closeOptionButtons();
}, function(error) {
$ionicListDelegate.closeOptionButtons();
if (error.http_status == 401) {
$ionicPopup.alert({
title: 'Oops, Session is expired!',
template: 'Looks like your session is expired or you logged in from someother device.'
});
$ionicHistory.clearCache().then(function() {
$state.go('start.login');
});
}
var alertPopup = $ionicPopup.alert({
title: 'Sorry, something went wrong during the request!',
template: error.data.errors[0].message
});
});
});
};
Ответ №1:
Вы должны использовать этот плагин после передачи файла
cordova plugin add cordova-plugin-refresh-gallery
и используйте эту функцию при успешном вызове передачи файлов
$cordovaFileTransfer.download(url, targetPath, options, trustHosts)
.then(function(result) {
refreshMedia.refresh(targetPath);
//some other things
Мой рабочий код
$cordovaFileTransfer.download(url, targetPath, {}, true).then(function (result) {
refreshMedia.refresh(targetPath);
$scope.fullViewImageDownloadSpiner = false;
tostService.notify('Image Downloaded', 'top');
}, function (error) {
$scope.fullViewImageDownloadSpiner = false;
tostService.notify('Try Again', 'top');
}, function (progress) {
// PROGRESS HANDLING GOES HERE
// $timeout(function () {
// $scope.downloadProgress = (progress.loaded / progress.total) * 100;
// })
});
и задайте свой целевой путь как
var filename = url.split("/").pop();
var targetPath = cordova.file.externalRootDirectory '/Download/' filename;
Этот плагин обновляет галерею изображений.Когда вы сохраняете изображение на устройстве Android, изображение изображения не отображается в галерее.Этот плагин будет работать
Надеюсь, это решит вашу проблему.. Спасибо 🙂
Комментарии:
1. Спасибо за ответ @Ujjwal kaushik. На самом деле, я тоже пробовал, но безуспешно.
2. Это не так. На самом деле, я установил этот плагин и добавил эту строку в успешный вызов. $cordovaFileTransfer.download(url, TargetPath, options, trustHosts) .then(функция(результат) { refreshMedia.refresh(TargetPath); }, функция(ошибка) { //ошибка идет сюда } });
3. Вот где это должно работать… это то же самое, что и у меня
4. Могу ли я узнать, что вы установили для целевого пути? Я установил значение пути как: var TargetPath = cordova.file.DataDirectory ‘myapp /’ filename; Я думаю, что это работает с cordova.file.externalDataDirectory, но работает только при наличии внешней карты памяти в мобильном телефоне.