Comment enregistrer une image dans localStorage et de l'afficher sur la page suivante?
Donc, en gros, j'ai besoin de télécharger une seule image, l'enregistrer pour le localStorage, puis de l'afficher sur la page suivante.
Actuellement, j'ai mon fichier HTML upload:
<input type='file' id="uploadBannerImage" onchange="readURL(this);" />
Qui utilise cette fonction pour afficher l'image sur la page
function readURL(input)
{
document.getElementById("bannerImg").style.display = "block";
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
document.getElementById('bannerImg').src = e.target.result;
}
reader.readAsDataURL(input.files[0]);
}
}
L'image s'affiche instantanément sur la page pour que l'utilisateur puisse voir. Ils sont ensuite invités à remplir le reste du formulaire. Cette partie fonctionne parfaitement.
Une fois que le formulaire est complet, ils ont ensuite appuyez sur un bouton "Enregistrer". Une fois que cette touche est pressée, je enregistrer toutes les entrées d'un formulaire comme localStorage
cordes. J'ai besoin d'un moyen de également enregistrer l'image en tant que localStorage
élément.
Le bouton enregistrer également les orienter vers une nouvelle page. Cette page affiche les données des utilisateurs dans une table, avec l'image en haut.
Tellement clair et simple, j'ai besoin d'enregistrer l'image dans localStorage
une fois le bouton "Enregistrer" est pressé, et alors prêt à l'image sur la page suivante à partir de localStorage
.
J'ai trouvé quelques solutions comme ce violon et cet article à moz://un HACKS.
Même si je suis encore extrêmement confus sur la façon dont cela fonctionne, et je n'ai vraiment besoin d'une solution simple. En gros, j'ai juste besoin de trouver l'image via le getElementByID
une fois le bouton "Enregistrer" est pressé, puis traiter et enregistrer l'image.
- Belle question..........
- Quel est le problème avec le stockage de lecteur.résultat dans localstorage comme dans cet exemple: jsfiddle.net/x11joex11/9g8NN?
- Pour les personnes qui cherchent à stocker de grandes quantités de données sur localStorage cette bibliothèque est très agréable: pieroxy/lz-chaîne: LZ-basé sur l'algorithme de compression pour le JavaScript
Vous devez vous connecter pour publier un commentaire.
À celui qui a aussi besoin de ce problème résolu:
Tout d'abord, je prends mon image avec
getElementByID
, et enregistrez l'image en Base64. Puis-je enregistrer la chaîne Base64 que monlocalStorage
valeur.Ici est la fonction qui convertit l'image en Base64 chaîne:
Puis, lors de ma prochaine page, j'ai créé une image avec un vide
src
comme suit:Et droit quand le chargement de la page, j'utilise ces trois lignes pour obtenir le Base64 chaîne de
localStorage
, et de l'appliquer à l'image de la viergesrc
j'ai créé:Testé dans un certain nombre de différents navigateurs et versions, et il semble fonctionner assez bien.
J'ai écrit un peu de 2,2 kb bibliothèque de sauver l'image dans localStorage JQueryImageCaching
Utilisation:
Vous pourriez sérialiser l'image dans les Data URI. Il y a un tutoriel dans ce post de blog. Qui va produire une chaîne de caractères que vous pouvez stocker dans le local de stockage. Puis sur la page suivante, utilisez les données uri comme la source de l'image.
"Notez que vous devez avoir une image entièrement chargé en premier (sinon se terminant en ayant la vide d'images), de sorte que, dans certains cas, vous auriez besoin d'envelopper la manipulation dans: bannerImage.la méthode addEventListener("load", function () {}); – yuga Nov 1 '17 à 13:04"
C'est extrêmement IMPORTANT. L'une de ces options, je suis à l'exploration de cette après-midi est à l'aide de javascript méthodes de rappel plutôt que addEventListeners puisque ça ne semble pas lier correctement. Obtenir tous les éléments à portée de main avant que la page charge SANS rafraichissement de la page est critique.
Si quelqu'un peut étendre ce programme, veuillez vous n'en avez-vous utilisé un settimeout, une attente, un rappel ou une méthode addEventListener méthode pour obtenir le résultat souhaité. Lequel et pourquoi?
J'ai le même problème, au lieu de stocker des images, qui finira par déborder le local de stockage, vous pouvez stocker le chemin d'accès à l'image.
quelque chose comme: