J'essaie de convertir un octet d'image en une chaîne encodée en base64, cette opération est réussie mais lorsque j'imprime la chaîne encodée, j'obtiens le ff:
Une chaîne encodée est censée être bien plus que les caractères ci-dessus. Maintenant, lorsque j'essaie de voir cela en ajoutant Le flutter coupe-t-il la chaîne dans la console ou quoi et si oui, comment puis-je obtenir la chaîne codée complète. / 9j / 4RgvRXhpZgAASUkqAAgAAAANAAABBAABAAAAQAYAAAEBBAABAAAAsAQAAA8BAgAIAAAAqgAAABABAgAIAAAAsgAAABIBAwABAAAACAAAABoBBQABAAAAugAAABsBBQABAAAAwgAAACgBAwABAAAAAgAAADEBAgANAAAAygAAADIBAgAUAAAA2AAAABMCAwABAAAAAQAAAGmHBAABAAAA7AAAACWIBAABAAAA7gIAAAADAABzYW1zdW5nAFNNLVA1NTUASAAAAAEAAABIAAAAAQAAAFA1NTVYWFUxQ1JBMgAAMjAxOTowMToxNCAwOTozMzoyOAAZAJqCBQABAAAAHgIAAJ2CBQABAAAAJgIAACKIAwABAAAAAgAAACeIAwABAAAAZAAAAACQBwAEAAAAMDIyMAOQAgAUAAAALgIAAASQAgAUAAAAQgIAAAGRBwAEAAAAAQIDAAKSBQABAAAAVgIAAAWSBQABAAAAXgIAAAeSAwABAAAAAgAAAAiSAwABAAAAAAAAAAmSAwABAAAAAAAAAAqSBQABAAAAZgIAAHySBwBiAAAAbgIAAACgBwAEAAAAMDEwMAGgAwABAAAAAQAAAAKgBAABAAAAQAYAAAOgBAABAAAAsAQAAAWgBAABAAAA0AIAABeiAwABAAAAAgAAAAGjBwABAAAAAQAAAAKkAwABAAAAAAAAAAOkAwABAAAAAAAAAAakAwABAAAAAAAAAAAAAAABAAAAFAAAAPAAAABkAAAAMjAxOTowMToxNCAwOTozMzoyOAAyMDE5OjAxOjE0IDA5OjMzOjI4AP0AAABkAAAA / QAAAGQAAADrAAAAZAAAAAcAAQAHAAQAAAAwMTAwA code> p>
data: image / jpeg; base64
, au début de la chaîne encodée, rien ne s'affiche.
5 Réponses :
Comment convertir nativement la chaîne -> base64 et base64 - > string montre comment encoder en base64
Dart fournit également des constructeurs sur la classe Uri
pour obtenir une URL de données
où le premier fait l'encodage base64 pour vous et le second prend une chaîne déjà encodée.
Vous devez le convertir en octets si vous essayez de l'envoyer au backend. Cela vous donnera la longue chaîne que vous recherchez;)
var params = { "image_file": base64Encode(_selectedImage.readAsBytesSync()), };
voici mon code
static Future<Response> upload64(File file) List<int> imageBytes = file.readAsBytesSync(); String base64Image = base64Encode(imageBytes); String fileName = path.basename(file.path); var body = {"fileName": fileName, "base64": base64Image}; print("http.upload >> " + body.toString()); }
La fenêtre de sortie de débogage la tronque probablement car elle est trop longue. Veuillez vous assurer du côté de l'API si vous l'acceptez complètement ou non.
Pour moi, base64 ne s'affiche pas complètement. si tel est le cas,
print ()
et debugPrint ()
sont tous deux utilisés pour se connecter dans la console. Si vous utilisez print ()
et que la sortie est trop importante à la fois, alors Android supprime parfois certaines lignes de journal. Pour éviter cela, utilisez debugPrint ()
.
Peut-être que vous recevez un flux et n'encodez que le premier morceau
List
tant qu'il y en a d'autres sur le fil.