Cordova / Ionic – Télécharger le file depuis InAppBrowser

Le scénario se passe comme ceci: J'ouvre un site web dans InAppBrowser, après que l'user termine le travail là-bas, le site génère un .pdf pour l'user à download, le problème est que le pdf ne télécharge pas, il l'ouvre dans le browser.

Y a-t-il un moyen de le faire download depuis InAppBrowser? Je travaille actuellement sur une application iOS, donc la solution serait meilleure pour iOS.

Merci d'avance.

En suivant les conseils de @jcesarmobile, voici ce que j'ai trouvé:

D'abord, j'ai dû installer le transfert de files plugin-cordova

Ouvrir le lien

 var url = "http://mi-fancy-url.com"; var windowref = window.open(url, '_blank', 'location=no,closebuttoncaption=Cerrar,toolbar=yes,enableViewportScale=yes'); 

Créer un écouteur sur ce windowref pour un événement loadstart et vérifier si ce qui est chargé est un pdf (c'est mon cas).

 windowref.addEventListener('loadstart', function(e) { var url = e.url; var extension = url.substr(url.length - 4); if (extension == '.pdf') { var targetPath = cordova.file.documentsDirectory + "receipt.pdf"; var options = {}; var args = { url: url, targetPath: targetPath, options: options }; windowref.close(); // close window or you get exception document.addEventListener('deviceready', function () { $timeout(function() { downloadReceipt(args); // call the function which will download the file 1s after the window is closed, just in case.. }, 1000); }); } }); 

Créez la fonction qui gérera le téléchargement du file, puis ouvrez-la:

 function downloadReceipt(args) { var fileTransfer = new FileTransfer(); var uri = encodeURI(args.url); fileTransfer.download( uri, // file's uri args.targetPath, // where will be saved function(entry) { console.log("download complete: " + entry.toURL()); window.open(entry.toURL(), '_blank', 'location=no,closebuttoncaption=Cerrar,toolbar=yes,enableViewportScale=yes'); }, function(error) { console.log("download error source " + error.source); console.log("download error target " + error.target); console.log("upload error code" + error.code); }, true, args.options ); } 

Le problème que je suis confronté maintenant est le path où il télécharge, je ne peux tout simplement pas l'ouvrir. Mais bon, au less le file est maintenant téléchargé. Je vais devoir créer un élément localStorage pour save les paths pour différents files.

Beaucoup de validations sont manquantes dans cette étape, c'était juste un exemple que j'ai fait rapidement pour vérifier si cela fonctionne. D'autres validations sont nécessaires.