使用 dio formdata 上传图像 flutter web

Upload image flutter web with dio formdata

我正在尝试使用 file_picker 和 dio 包将文件作为表单数据上传。

这是针对 flutter web 的,似乎 MultipartFile.fromFile 不被接受。

我试过的是:

if (result != null) {    
  for (var file in result.files) {
    final formData = FormData.fromMap({
      ...someOtherData,
      'file': File(file.name), // <------ I guess this is where the issue is, I also tried file instead of File(file.name)
    });
    
    dio.post(
      url,
      data: formData,
    );
  }
}

好的,我找到了,留在这里给有同样问题的人

if (result != null) {    
  for (var file in result.files) {
    final formData = FormData.fromMap({
      ...someOtherData,
      'file': MultipartFile.fromBytes(file.bytes as List<int>)
    });
    
    dio.post(
      url,
      data: formData,
    );
  }
}

如果有人仍然想知道如何让它同时在移动设备和网络上运行(这是使用 image_picker 的 PickedFile 作为图像变量类型):

 FormData body;
 final bytes = await image.readAsBytes();
 final MultipartFile file = MultipartFile.fromBytes(bytes, filename: "picture");
 MapEntry<String, MultipartFile> imageEntry = MapEntry("image", file);
 body.files.add(imageEntry);

** 问题是文件名在 Web 上是必需的,在移动设备上是自动分配的。**