简体   繁体   English

Flutter readAsBytesSync 文件读取不完整以编码 base64

[英]Flutter readAsBytesSync file read incomplete to encode base64

  1. List item项目清单

I'm trying to send a JPG image (captured by ImagePicker in emulator) via HTTP POST with base64 encoding to an AWS REST API. I'm trying to send a JPG image (captured by ImagePicker in emulator) via HTTP POST with base64 encoding to an AWS REST API. But readAsBytesSync() operation only reads a (head) part of the image (I've tested it printing to the string as bytes) thus base64 can only encode that small part.但是 readAsBytesSync() 操作只读取图像的(头)部分(我已经测试过它以字节的形式打印到字符串中),因此 base64 只能编码那一小部分。 What may be the reason, many thanks for your help in advance.可能是什么原因,非常感谢您提前提供的帮助。

  Future<void> captureImage(ImageSource imageSource) async {
    try {
      ImagePicker picker = ImagePicker();
      final pickedFile = await picker.getImage(
          source: ImageSource.camera,
          preferredCameraDevice: CameraDevice.front);
                 String theimagepath = pickedFile.path.toString();
        //_imageFile = imageFile;
       
        print('theimagepath just below');
        print(theimagepath);
         
           String img64 = base64Encode(Io.File(theimagepath).readAsBytesSync());
           //print('bytes'+bytes.toString());
         
           print('img64:   '+img64);
 _imageFile = Io.File(pickedFile.path);


      setState(() {
        print('State here is ');
------------- DEBUG OUTPUT BELOW (base64 encoded string is incomplete) -------------

I/flutter (13629): theimagepath just below
I/flutter (13629): /storage/emulated/0/Android/data/com.example.blabla/files/Pictures/f8a0295e-9ce5-446c-91d2-41c938e49b7f5430316734413263510.jpg
I/flutter (13629): img64:   /9j/4QGqRXhpZgAATU0AKgAAAAgABwEQAAIAAAAPAAAAYgEAAAQAAAABAAAFoAEBAAQAAAABAAAHgAEyAAIAAAAUAAAAcQESAAMAAAABAAEAAIdpAAQAAAABAAAAjAEPAAIAAAAHAAAAhQAAAABzZGtfZ3Bob25lX3g4NgAyMDIwOjA2OjI1IDExOjUzOjU0AEdvb2dsZQAAEIKdAAUAAAABAAABUoKaAAUAAAABAAABWpKSAAIAAAAENDE2AJKRAAIAAAAENDE2AJKQAAIAAAAENDE2AJIKAAUAAAABAAABYpIJAAMAAAABAAAAAIgnAAMAAAABAGQAAJAEAAIAAAAUAAABapADAAIAAAAUAAABfqADAAQAAAABAAAHgKQDAAMAAAABAAAAAKACAAQAAAABAAAFoJICAAUAAAABAAABkpIBAAoAAAABAAABmpAAAAcAAAAEMDIyMAAAAAAAAACtAAAAZAAgCBc7msoAAAARHAAAA+gyMDIwOjA2OjI1IDExOjUzOjU0ADIwMjA6MDY6MjUgMTE6NTM6NTQAAAAAngAAAGQAACK/AAAD6P/gABBKRklGAAEBAAABAAEAAP/bAEMAAgEBAQEBAgEBAQICAgICBAMCAgICBQQEAwQGBQYGBgUGBgYHCQgGBwkHBgYICwgJCgoKCgoGCAsMCwoMCQoKCv/bAEMBAgICAgICBQMDBQoHBgcKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCv/AABEIB4AFoAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZ
I/flutter (13629): State here is

This also happened to me here .这也发生在我这里

I thought at first it was in front-end(flutter) but upon hours of inspecting and research what happens is that the back-end (go lang) receiver's buffer reader closes it just before the whole base64 was sent through an API call.起初我以为它是在前端(颤振),但经过数小时的检查和研究,后端(go lang)接收器的缓冲区读取器在整个 base64 通过 API 调用发送之前将其关闭。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM