1

文件/字段如下:

jsonData,

List[images],

MultipartFile,

使用 DIO 一次将所有这些字段/文件发送到服务器

4

3 回答 3

5

解决了..参考https://github.com/flutterchina/dio#sending-formdata

多个文件上传

向FormData中添加多个文件有两种方式,唯一的区别是数组类型的上传key不同。</p>

  FormData.fromMap({
    "files": [
      MultipartFile.fromFileSync("./example/upload.txt",
          filename: "upload.txt"),
      MultipartFile.fromFileSync("./example/upload.txt",
          filename: "upload.txt"),
    ]
  });

上传key最终变成了“files[]”,这是因为很多后端服务在获取文件数组的时候都会给key加一个中括号。如果你不想要“[]”,你应该如下创建FormData(不要使用FormData.fromMap):

  var formData = FormData();
  formData.files.addAll([
    MapEntry(
      "files",
       MultipartFile.fromFileSync("./example/upload.txt",
          filename: "upload.txt"),
    ),
    MapEntry(
      "files",
      MultipartFile.fromFileSync("./example/upload.txt",
          filename: "upload.txt"),
    ),
  ]);
于 2020-05-18T12:49:30.653 回答
1

来自dio的文件:

“通过 FormData 将多个文件上传到服务器:”

FormData.fromMap({
    "name": "wendux",
    "age": 25,
    "file": await MultipartFile.fromFile("./text.txt",filename: "upload.txt"),
    "files": [
      await MultipartFile.fromFile("./text1.txt", filename: "text1.txt"),
      await MultipartFile.fromFile("./text2.txt", filename: "text2.txt"),
    ]
});
response = await dio.post("/info", data: formData);
于 2020-05-16T14:24:06.920 回答
1
"files": [
      await MultipartFile.fromFile("./text1.txt", filename: "text1.txt"),
      await MultipartFile.fromFile("./text2.txt", filename: "text2.txt"),
    ]

尝试在“文件 []”中添加 []:es:

"files[]": [
      await MultipartFile.fromFile("./text1.txt", filename: "text1.txt"),
      await MultipartFile.fromFile("./text2.txt", filename: "text2.txt"),
    ]
于 2021-10-20T10:03:24.590 回答