Illégale en base64 de données au niveau de l'entrée de l'octet 4 lors de l'utilisation de base64.StdEncoding.DecodeString(str)
J'obtiens: erreur: illegal base64 data at input byte 4
Lors du passage dans Base64Image en base64.StdEncoding.DecodeString(str)
:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYA...
Laissez-moi savoir si vous avez besoin de la pleine base64, j'ai juste collé dans la première partie, comme il semble que le problème est dans les 4 octets?
data, errBase := base64.StdEncoding.DecodeString(Base64Image)
if errBase != nil {
fmt.Println("error:", errBase)
return false
}
Savez-vous pourquoi?
Merci d'avance
Vous avez besoin d'enlever le "data:image/png;base64," préfixe.
OriginalL'auteur Chris G. | 2015-06-24
Vous devez vous connecter pour publier un commentaire.
Pas l'ensemble de votre chaîne d'entrée vous essayez de décoder est encodé en Base64 forme.
Ce que vous avez est un Les données de schéma d'URI, qui permet d'inclure des données en ligne dans les pages web comme si elles étaient des ressources externes.
Il a un format de:
Où dans votre cas
image/png
est le MIME-type, avec en option un jeu de caractères est manquant, et";base64"
est une constante chaîne de caractères indiquant que<data>
est codé à l'aide de l'encodage Base64.Pour acquérir les données (c'est le Base64), couper le préfixe jusqu'à la virgule (virgule):
De sortie:
De laquelle vous pouvez maintenant décoder:
De sortie:
L'essayer sur le Aller De L'Aire De Jeux.
OriginalL'auteur icza
C'est parce que votre chaîne n'est pas en base64 jusqu'à ce que après la virgule de données:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkcaya...
importer des "chaînes" et l'utilisation de split pour obtenir le demi après la virgule, puis appeler decodestring.
EDIT: en fait la split jeton
base64,
parce que c'est plus spécifique à votre entrée.OriginalL'auteur evanmcdonnal
Parfois ce qui se passe si votre chaîne base64 n'est pas correctement rembourré avec == à la fin.
OriginalL'auteur Erkin Djindjiev