1

J'utilise cordova-plugin-file-transfer et cordova-plugin-file pour télécharger des avatars utilisateur et les afficher localement dans l'application. Je récupère avec succès les images et les stocke dans file.dataDirectory selon: https://ionicframework.com/docs/native/file-transfer/. Lorsque je vérifie le fichier dans le répertoire, il dit qu'il existe ... Cependant, lorsque j'essaie de définir le chemin absolu du fichier à une balise <img> je ne vois rien. Je tire dynamiquement sur le chemin mais même quand je le code dur ... rien.Impossible de définir img src à partir du fichier cordova dans Ionic

Code pour la sauvegarde, avatars chargement:

saveAvatar() 
{ 
    var downloadUrl = this.user.avatar + "?type=small&sz=75"; 

    console.log("Downloading Avatar from: " + downloadUrl); 
    console.log("Storing file to: " + this.file.dataDirectory + this.user.id + '/avatar.jpg'); 


    this.fileTransfer.download(downloadUrl, this.file.dataDirectory + this.user.id + '/avatar.jpg') 
    .then((entry) => { 
     console.log('~~~~~ download complete: ' + entry.toURL()); 
    }, (error) => { 
     console.log('Unable to download avatar: ' + error); 
    }); 
} 

loadAvatar() 
{ 
    var userDir = this.file.dataDirectory + this.user.id; 
    var fileName = 'avatar.jpg'; 

    this.file.resolveDirectoryUrl(userDir) 
    .then((directoryEntry: DirectoryEntry) => { 
     console.log("Dir Resolved: " + directoryEntry.isDirectory); 

     this.file.getFile(directoryEntry, fileName, { create: false }) 
     .then(file => { 
      console.log("File Found: " + file.toURL()); 
      this.avatars[this.user.id] = file.toURL(); 
     }) 
     .catch(err => console.log('Unable to load avatar: ' + err)); 
    }) 
    .catch(err => console.log('Unable to Resolve Directory Entry: ' + JSON.stringify(err))); 
} 

Les chemins absolus des images stockées en tant que tels:

file:///data/user/0/package_name_here/files/1/avatar.jpg 

ou lors d'une tentative de stockage externe:

file:///storage/emulated/0/Android/package_name_here/files/1/avatar.jpg 

Toute aide est très appréciée!

Répondre

1

Compris le problème. Bien que je courais sur un appareil Android, je l'exécutais en direct ionique qui ne fonctionne pas avec tous les plugins Cordova. Donc, au lieu de faire ionic cordova run android -l -c je dois juste l'exécuter comme ionic cordova android.

+0

Oh..Est-ce que cela signifie que les «Plugins» ne fonctionnent pas sur l'appareil lui-même avec «-l»? – Sampath

+0

Non, j'ai des plugins qui fonctionnent avec 'l', c'est ce qui me dérange, mais j'ai remarqué qu'il y en a qui ne fonctionnent que lorsque je fais une build sans elle. Donc, je ne sais pas s'il y a une rime ou une raison, mais c'est bon à savoir car cela pourrait sauver des maux de tête à l'avenir. – askilondz

+0

Yep, Il est toujours bon d'utiliser cette 'ionique cordova run android --prod --device' quand nous devions tester' Plugins'. – Sampath