如何在 flutter 中使用 DIO 将多个文件、文件列表发布到服务器

ajs*_*ane 2 http dart flutter dio

文件/字段如下:

jsonData,

List[images],

MultipartFile,
Run Code Online (Sandbox Code Playgroud)

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

ajs*_*ane 7

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

\n\n

多个文件上传

\n\n

有两种方法可以将多个文件添加到 FormData\xef\xbc\x8c 唯一的区别是数组类型\xe3\x80\x82 的上传密钥不同

\n\n
  FormData.fromMap({\n    "files": [\n      MultipartFile.fromFileSync("./example/upload.txt",\n          filename: "upload.txt"),\n      MultipartFile.fromFileSync("./example/upload.txt",\n          filename: "upload.txt"),\n    ]\n  });\n
Run Code Online (Sandbox Code Playgroud)\n\n

上传key最终变成了“files[]”\xef\xbc\x8c,这是因为很多后端服务在获取文件数组时都会在key上添加一个中括号。如果你不想要\xe2\x80\x9c[]\xe2\x80\x9d\xef\xbc\x8c你应该创建FormData如下\xef\xbc\x88不要使用FormData.fromMap\xef\xbc\ x89:

\n\n
  var formData = FormData();\n  formData.files.addAll([\n    MapEntry(\n      "files",\n       MultipartFile.fromFileSync("./example/upload.txt",\n          filename: "upload.txt"),\n    ),\n    MapEntry(\n      "files",\n      MultipartFile.fromFileSync("./example/upload.txt",\n          filename: "upload.txt"),\n    ),\n  ]);\n
Run Code Online (Sandbox Code Playgroud)\n