使用 Multipart 和 Dio 在 Flutter 上发送多个图像时出现问题

0 multipartform-data dart flutter dio

我正在尝试将来自 Flutter 上的多图像选择器插件的多个文件发送到我的服务器,为此我尝试使用 Dio 来发送它。但多部分标签也不会上传文件。如何进行?

    Future<Response> _uploadFile() async {

    var catUpload = jsonEncode(incluirCategoriasParaUpload());
    final FormData formData = FormData.fromMap({
      "action": 'add_Anuncio',
      "filial_id": "1",
      "titulo": tituloControler.text,
      "descricao": descricaoControler.text,
      "categorias": catUpload
    });

    for (var val in listaImagensParaUpload) {
      ByteData byteData = await val.getByteData();
      Uint8List pngBytes = byteData.buffer.asUint8List();
      formData.files.add(
          MapEntry("arquivos",
              await MultipartFile.fromBytes(pngBytes, filename: "teste")
          )
      );
    }

    Dio dio = new Dio();
    dio.interceptors.add(alice.getDioInterceptor());
    return await dio
        .post(URL_WS + WS_PAGE,
        data: formData,
        options: Options(method: 'POST', responseType: ResponseType.json))
        .timeout(Duration(seconds: 2000));
//        .catchError(dioError);


  }
Run Code Online (Sandbox Code Playgroud)

小智 5

您必须将此 for 循环声明为 toList()。

这是一个如何制作的示例。

formData = FormData.fromMap({
  'id': '1',
  'title': 'myTitle',
  'files': [
            for (var file in listFiles)
            {await MultipartFile.fromFile(item.path, filename: 'fileName')}
             .toList()
           ]
});
Run Code Online (Sandbox Code Playgroud)

我正在使用 Dio 库与 MultiPartFile 一起工作。