2

Ich möchte eine Datei vom Internet/Server auf meiner ionischen App herunterladen. Ich habe das File Transfer-Plugin verwendet, um das gleiche zu erreichen, aber die Datei wird nicht heruntergeladen.Datei kann nicht in Cordova und Ionic mit FileTransfer heruntergeladen werden

Ich bekomme den Erfolg Rückruf vom Plugin, aber wenn ich versuche, die Datei von FileOpener2 Plugin zu öffnen, bekomme ich einen Fehler, dass die Datei nicht existiert. Ich habe den gesamten Speicher meines Handys nach der Datei durchsucht, aber er wurde nicht gefunden. PFB der Code, den ich verwendet:

var fileTransfer = new FileTransfer(); 

var imguri = "http://cdn.wall-pix.net/albums/art-space/00030109.jpg"; 
var targetPath = cordova.file.dataDirectory + "testImage.jpg"; 
fileTransfer.download(
imguri, 
targetPath, 
function(entry) { 
    console.log("download complete - Internal URL: " + entry.toInternalURL()); 
    console.log("download complete - Full Path: " + entry.fullPath); 

          $cordovaFileOpener2.open(entry.fullPath, 'image/jpeg').then(function() { 
         // file opened successfully 
         console.log("File opened successfully!"); 
        }, function(err) { 
         // An error occurred. Show a message to the user 
         console.log(JSON.stringify(err)); 
        }); 



}, 
function(error) { 
    console.log("download error source " + error.source); 
    console.log("download error target " + error.target); 
    console.log("download error code" + error.code); 
}, 
false, 
{ 
    headers: { 
     "Authorization": "Basic dGVzdHVzZXJuYW1lOnRlc3RwYXNzd29yZA==" 
    } 
} 
); 

In $ cordovaFileOpener2.open, wenn ich entry.toInternalURL als Parameter geben, ich diesen Fehler -> konnte nicht konfiguriert Wurzel finden, die /data/data/com.echidna enthält. foodreview/files/testImage.jpg

In $ cordovaFileOpener2.open, wenn ich entry.fullPath als Parameter geben, bekomme ich diesen Fehler -> { "status": 9, "message": "Datei nicht gefunden"}

Von meinem Dateimanager habe ich nach der Datei testImage.jpg gesucht und die Datei wurde nicht gefunden. Das sollte bedeuten, dass die Datei nicht von Anfang an heruntergeladen wurde. Wie wurde dann der Erfolgsrückruf ausgelöst?

Antwort

1

Das Problem scheint die neuen Benutzerberechtigungen zu sein, die für eine App in Android 6.0 und höher erforderlich sind. Die Datei-Plugins fordern den Benutzer nicht für den Speicherzugriff an. Dies muss zuerst von der App angefordert werden und kann von einem anderen Plugin übernommen werden. Es gibt ein paar Plugins dafür, aber ich benutze https://github.com/NeoLSN/cordova-plugin-android-permission und das funktioniert für mich!

Überprüfen Sie also vor dem Herunterladen, ob Sie Schreibrechte für den Speicher haben. Wenn Sie dies nicht tun, fordern Sie die Berechtigungen an (das Überprüfen und Anfordern von Berechtigungen erfolgt über das Plugin im obigen Link). Nachdem Sie den Zugriff haben, laden Sie die gewünschte Datei herunter!

Prost!

0

statt

file.dataDirectory 

die die Datei als privat speichert und erlaubt keine Dateimanager es

Verwendung

file.externalDataDirectory 

speichert die Datei als öffentlich zu lesen und ermöglicht es anderen apps zu öffnen

bitte nicht mit externalDataDirecto verwechseln Als (SD-Karte) verwendet es nur die internen Speicher Ihrer Geräte

Verwandte Themen