首页 > 解决方案 > 在 Flutter 中使用 post 方法上传图片

问题描述

我必须使用 Flutter 中的提供程序将图像从画廊上传到服务器。

这是文件选择器

  _loadPicker(ImageSource source) async {
   File picked = await ImagePicker.pickImage(source: ImageSource.gallery);
   print(picked);
   if (picked != null) {
   final response = await Provider.of<ProfilePictureUpdate>(context, listen: 
    false).profilePicUpdate(picked);
    if (response["status"] ) {
      Fluttertoast.showToast(msg: response["title"]);
     }
      else {
     Fluttertoast.showToast(msg: response["title"]);
      }
     }
    }

这是post方法

 Future<Map<String, dynamic>> profilePicUpdate(picked) async {
 try {
   final response = await ApiRequest.send(route: "profile/update/picture", method: "POST", 
   body: {
    "  photo_url" : picked,
    });
  if (response.statusCode == 200 ) {
    return {
      "status": true,
      "title" : response["title"]
    };
  }
  }

标签: flutterflutter-providerflutter-image

解决方案


如果你想发送图像给你,你必须在'Dio'类似的网络(enctype )中使用formData(多部分)。在http中,你也可以使用multipart。

必须记住你使用的图像总是不一样的,这里当服务器端参数名称相同时使用这个字段。

 class ImageRepository {
  Future<dynamic> uploadImage(filepath) async {
  FormData formData = FormData.fromMap({
    "image": await MultipartFile.fromFile(filepath,
      filename: filepath.split('/').last)
   });
   var response = await Dio().post(
    url,
    data: formData),
  );
  print(response.data);
    if (response.statusCode == 200) {
    return 'Image Upload';
  } else {
    throw Exception 'Problem occour';
  }
  }

推荐阅读