0

我正在尝试将图像数据从我的 nodejs express 服务器发送到颤动。我从另一台服务器接收图像数据作为缓冲区Appwrite并将其解码为 base64 字符串,然后发送该字符串,在我的颤振应用程序上接收到该字符串后,我尝试对其进行解码并显示图像,但显示失败并显示错误消息

错误

服务器端

const getPhoto = async function(req, res){
    var data = await api.getStorage().getFilePreview('61579ced0');
    console.log("raw data -------------------------------\n")
    console.log(data);
    var base64 = data.toString('base64');
    console.log("base 64 data -------------------------------\n")
    console.log(base64);
    
    var obj = new Object();
    obj['data'] = base64;
    res.send(obj);
};

原始数据格式

下面是输出console.log(data);

来自缓冲区的原始数据

编码形式(base 64)

下面是输出var base64 = data.toString('base64');

base64 字符串

颤振侧

模型

@JsonSerializable()
    class ImageResponse {
    
      String data;
    
      ImageResponse(this.data);
    
      factory ImageResponse.fromJson(Map<String, dynamic> json) =>
          _$ImageResponseFromJson(json);
    
      Map<String, dynamic> toJson() => _$ImageResponseToJson(this);
    
      Uint8List getImage() {
        return base64Decode(data);
      }
    }

显示图像

FutureBuilder<Uint8List>(
                      future: bloc.getPhoto(),
                              builder: (BuildContext context,
                                  AsyncSnapshot<Uint8List> snapshot) {
                                if (snapshot.hasData) {
                                  return Image.memory(snapshot.data);
                                } else {
                                  return FittedBox(
                                    fit: BoxFit.contain,
                                    child: Image.asset(
                                      'assets/images/placeholder.jpg',
                                    ),
                                  );
                                }
                              })
4

0 回答 0