Image 在flatter中通过POST API调用将图像传递给REST

Image 在flatter中通过POST API调用将图像传递给REST,image,api,flutter,dart,Image,Api,Flutter,Dart,我正在尝试传递一个从相机或从图库中拾取的图像,并使用POST API调用将其传递到后端。 我正在使用Flitter的image_picker插件从相机和画廊访问图像 下面是我试过的 以文件格式获取图像文件(从文件路径) 将图像的大小减小为较小的值(为此使用颤振图像压缩库) 将结果转换为base64字符串值或作为表单数据,并将其设置为请求正文中的字段 我将提供我在颤振代码端为上述方法所做的尝试。请任何人都能指导我,我做得对吗?还是有更好的方法来实现这一点 从相机中拾取图像 使用POST方法上传*

我正在尝试传递一个从相机或从图库中拾取的图像,并使用POST API调用将其传递到后端。 我正在使用Flitter的image_picker插件从相机和画廊访问图像

下面是我试过的

  • 以文件格式获取图像文件(从文件路径)
  • 将图像的大小减小为较小的值(为此使用颤振图像压缩库)
  • 将结果转换为base64字符串值或作为表单数据,并将其设置为请求正文中的字段
  • 我将提供我在颤振代码端为上述方法所做的尝试。请任何人都能指导我,我做得对吗?还是有更好的方法来实现这一点

    从相机中拾取图像

    使用POST方法上传*

    String base64Image;
        if(_imageURI != null) {
    List<int> imageBytes = _imageURI.readAsBytesSync();
          base64Image = base64.encode(imageBytes);
    //
    var data = {
          'user_email': userEmail,
          'user_token': userToken,
          'pet': {
            "age": petAgeController.text,
            "birth_date": bdate,
            'eatbone': ,
            'ideal_weight': petIdealWeightController.text,
            'image': base64Image,
            'name': petNameController.text,
            "sex": _petSex,
            'weight': petWeightController.text,
            'guideline_id': '1',
            'activity_level_id': '2',
            'breed_id': '12',
            'user_id': userID,
          }
        };
    
        // final PET.PetCreate
        final pet = await CallApi().createThePet(data, 'pets/create')
    }
    
    字符串base64Image;
    如果(_imageURI!=null){
    List imageBytes=_imageURI.readAsBytesSync();
    base64Image=base64.encode(imageBytes);
    //
    风险值数据={
    “用户电子邮件”:用户电子邮件,
    “用户令牌”:用户令牌,
    “宠物”:{
    “年龄”:petAgeController.text,
    “出生日期”:b日期,
    “eatbone”:,
    “理想重量”:PetidelWeightController.text,
    “图像”:base64Image,
    “名称”:petNameController.text,
    “性”:,
    “权重”:petWeightController.text,
    “指南id”:“1”,
    “活动级别id”:“2”,
    ‘品种识别号’:‘12’,
    “用户id”:用户id,
    }
    };
    //最终宠物。宠物创建
    final pet=wait CallApi().createThePet(数据“pets/create”)
    }
    
    所以。。。你有什么问题?我的问题是我在这里干什么?还有更好的方法吗?我正在尝试在Flitter中上传这张图片来学习。我真的很想知道。从相机或图库中拾取图像,缩小其原始大小,然后使用api上载。我对这种文件格式和base64字符串转换感到困惑。我应该两者都做吗?或者不,如何?
    String base64Image;
        if(_imageURI != null) {
    List<int> imageBytes = _imageURI.readAsBytesSync();
          base64Image = base64.encode(imageBytes);
    //
    var data = {
          'user_email': userEmail,
          'user_token': userToken,
          'pet': {
            "age": petAgeController.text,
            "birth_date": bdate,
            'eatbone': ,
            'ideal_weight': petIdealWeightController.text,
            'image': base64Image,
            'name': petNameController.text,
            "sex": _petSex,
            'weight': petWeightController.text,
            'guideline_id': '1',
            'activity_level_id': '2',
            'breed_id': '12',
            'user_id': userID,
          }
        };
    
        // final PET.PetCreate
        final pet = await CallApi().createThePet(data, 'pets/create')
    }