5
votes

Le téléchargement d'images encodées en base64 est-il une mauvaise pratique?

Y a-t-il un problème lors de l'utilisation du codage base64 pour télécharger ( télécharger uniquement ) l'image sur le serveur? Compte tenu de la taille d'image courante d'environ 1 à 2 Mo, et non des images de la taille d'une icône. Est-ce une mauvaise pratique? Doit-il toujours utiliser des données de formulaire pour le téléchargement d'images?

L'image serait envoyée dans un corps POST (type de contenu JSON) avec d'autres données, comme:

// POST /signup
{
  email: 'example@email.com',
  password: 'example@email.com',
  name: 'Example Name',
  picture: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAA...',
}

Une fois dans le serveur, il serait envoyé au bucket AWS et servi sous la forme d'un fichier binaire, et non d'une chaîne encodée en base64.


2 commentaires

Veuillez ajouter quelques détails supplémentaires sur l'implémentation que vous souhaitez afin que nous sachions mieux à quel point il est approprié d'utiliser base64: est-ce une grande ou une petite image? Comment allez-vous effectuer le téléchargement? (ajax, données de formulaire, etc.)


@MarcSances Vous avez raison. Fixé.


3 Réponses :


1
votes

Les images encodées en Bas64 sont une bonne pratique pour les images de petite taille (Ko). Pour une image de plus grande taille, vous obtiendrez probablement des erreurs de taille.

Bien que si vous souhaitez utiliser des images de taille (Mo), je suggère de les passer sous forme de vignette.

Les miniatures sont des versions de taille réduite d'images ou de vidéos, utilisées pour aider à les reconnaître et à les organiser, jouant le même rôle pour les images qu'un index de texte normal pour les mots

https://www.npmjs.com/package/image-thumbnail


0 commentaires

4
votes

Le résultat généralement accepté de l'encodage Base64 d'une image binaire est un résultat environ 30% supérieur à l'original. Si la limite du serveur est de 2 Mo, vous êtes effectivement limité à une image de 1,4 Mo lorsque vous l'augmentez via l'encodage. Base64 n'est pas une méthode de compression, c'est juste une méthode pour obtenir des données binaires vers un serveur via HTTP .

Si vous avez le contrôle du serveur, faites-le accepter à la place des données binaires compressées gzip, ou si vous pouvez placer l'image quelque part, envoyez-en l'URL dans la requête et le serveur pourra la télécharger.


0 commentaires

0
votes

Oui, je pense que vous pouvez utiliser base64 pour télécharger une image, car vous utilisez l'api dans votre application. Vous devez convertir en image physique et obtenir le nom du fichier et le stocker dans votre base de données.


0 commentaires