如何 POST 多个文件,文件列表到服务器使用 DIO in flutter

How to POST multiple files, list of files to server using DIO in flutter

Files/fields 像 :

jsonData,

List[images],

MultipartFile,

使用 DIO

立即将所有这些 fields/files 发送到服务器

来自 dio 的文档:

"Uploading multiple files to server by 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);

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

上传多个文件

将多个文件添加到FormData有两种方式,唯一的区别是数组类型上传key不同。

  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"),
    ),
  ]);
"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"),
    ]