Android 将带有表单数据的图像上传到服务器

Android 将带有表单数据的图像上传到服务器,android,flutter,http,multipartform-data,form-data,Android,Flutter,Http,Multipartform Data,Form Data,我在dart中使用ImagePicker包,当我拾取图像时,我希望将其与表单数据一起上载到服务器,但当我尝试发送此信息时,我给出了此错误 “未处理的异常:FileSystemException:无法检索文件长度,路径='file:'/storage/emulated/0/Android/data/com.example.aloteb/files/Pictures/scaled_image_picker359475209435545880.jpg”“” 这是我发送到服务器的代码 var reque

我在dart中使用ImagePicker包,当我拾取图像时,我希望将其与表单数据一起上载到服务器,但当我尝试发送此信息时,我给出了此错误

“未处理的异常:FileSystemException:无法检索文件长度,路径='file:'/storage/emulated/0/Android/data/com.example.aloteb/files/Pictures/scaled_image_picker359475209435545880.jpg”“” 这是我发送到服务器的代码

var request = http.MultipartRequest('POST', Uri.parse(url));
request.fields.addAll({
  'data': '$map'
});
request.files.add(await http.MultipartFile.fromPath('image',picproviderformdate.getPAth.toString()));
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
  print(await response.stream.bytesToString());
}

else {
  print(response.reasonPhrase);
}
这是我的图像选择器代码

picprovider pic = Provider.of<picprovider>(context,listen: false);
    File image = await ImagePicker.pickImage(
        source: ImageSource.gallery, imageQuality: 50);

    setState(() {
      _image = image;
    });
    print(_image);
    pic.setpathe(_image);
picprovider pic=Provider.of(上下文,侦听:false);
File image=wait ImagePicker.pickImage(
来源:ImageSource.gallery,imageQuality:50);
设置状态(){
_图像=图像;
});
打印(_图像);
图.设置路径(_图像);

有人能帮我解决这个问题吗?

我不久前也遇到过类似的问题,我使用了依赖项而不是传统的Http链接

代码非常相似,我可以给你举个例子

final File File=File(“${documentDirectory.path}/picture.png”);
最终httpDio=dio.dio();
final formData=dio.formData.fromMap({
“数据”:“{}”,
“files.image”:等待dio.MultipartFile.fromFile(
“${documentDirectory.path}/picture.png”,
文件名:“picture.png”,
contentType:MediaType('image','png'))
});
试一试{
最终dio.Response响应=等待httpDio.post(
“终端/化身”,
数据:formData,
选项:dio.options(标题:{“Authorization”:“Bearer yourTokenIfNeeded”});
如果(response.statusCode==200){
//成功
}
}关于dio.dio错误捕获(e){
如果(如响应!=null){
//错误
打印(如响应数据);
返回;
}
}
如果需要,请不要忘记更新API端点和路由以及您的身份验证授权