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!
Oh..Est-ce que cela signifie que les «Plugins» ne fonctionnent pas sur l'appareil lui-même avec «-l»? – Sampath
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
Yep, Il est toujours bon d'utiliser cette 'ionique cordova run android --prod --device' quand nous devions tester' Plugins'. – Sampath