Rails / Ruby enregistrer l'image en tant que base64 et y accéder dans les vues
Je voudrais savoir peut-on convertir une image en base64 et de l'enregistrer dans une base de données et y accéder dans les vues.
J'ai cherché sur google et stackoverflow, tous d'entre eux commence à partir du milieu comme de codage ou de l'affichage de l'image.
J'ai besoin de savoir comment peut-on convertir une image url/chemin d'accès(disons que j'ai l'image du magasin à l'intérieur de mon application et de son url stockée dans la colonne)
Comment l'encoder en base64 avant de l'enregistrer(faut-il les convertir en base64 de la première et de les enregistrer dans la bd?).
Comment faire pour l'afficher dans la vue
source d'informationauteur Anbazhagan p
Vous devez vous connecter pour publier un commentaire.
Vous pouvez diviser cette tâche à trois ou quatre étapes:
Obtenir l'image
À partir d'éléments de canalisation
Si vous êtes à l'aide de Rails asset pipeline pour cela, vous pouvez utiliser
Rails.application.assets
de hachage pour obtenir de l'image:Rails.application.assets['image_name.png'].to_s
vous donnera le contenu deimage_name.png
image.à partir d'un fichier local ou une url
Ici est la question à ce sujet sur StackOverflow.
encoder
Base64 Ruby module docs vous indique comment utiliser l'encodage Base64 en Ruby:
REMARQUE: dans ce cas
strict_encode64
est préférable surencode64
car il ne pas ajouter de nouvelles lignes. (crédit va à Sergey Mell pour le pointage)De docs:
encode64
-... Line feeds are added to every 60 encoded characters.
strict_encode64
-... No line feeds are added.
Stocker dans la base de données (optionnel)
Je vous suggère de créer un ActiveRecord modèle pour que, avec un champ de type
text
à garder en base64 de la représentation de l'image.D'affichage dans les vues
Vous pouvez fournir des données-url pour
src
attribut deimg
marque, de sorte que, le navigateur va décoder l'image de base64 et de l'afficher comme image régulière:Ne pas oublier de changer le format d'image de n'importe quel format que vous utilisez dans
data:image/png
section.