Flutter中如何通过MultipartRequest发送数组?
在Flutter的MultipartRequest中发送数组参数
我懂你现在的困扰——Postman里传数组参数很直观,但Flutter的MultipartRequest默认的fields是键值对结构,直接把数组赋值给单个键肯定行不通。别担心,这里有两种适配不同后端的解决方案,帮你搞定这个问题:
方法1:使用key[]格式添加数组项(通用型)
绝大多数后端框架(比如Laravel、Django)都支持这种格式,你只需要把数组里的每个元素单独添加到fields中,键名统一用unit_id[]即可:
var uri = Uri.parse(Constants.BASEURL + Constants.KEYEORD_CREATE_TENANACY); Map<String, String> headers = { "Accept": "application/json", "Authorization": token }; var request = new http.MultipartRequest("POST", uri); request.headers.addAll(headers); request.fields['property_usage'] = property_use; // 假设unitlist是List<String>类型的数组 for (String unitId in unitlist) { request.fields['unit_id[]'] = unitId; } var response = await request.send(); print("Tenancy Add Result: ${response.statusCode}"); if (response.statusCode == 200) { print(response); }
方法2:使用带索引的键名(适配特定后端)
如果你的后端要求数组参数带明确索引(比如unit_id[0]、unit_id[1]),可以改成带索引的键名来添加:
// 替换上述代码中的循环部分 for (int i = 0; i < unitlist.length; i++) { request.fields['unit_id[$i]'] = unitlist[i]; }
小提醒
- 可以先在Postman里查看成功请求的Form Data结构,再对应复刻到Flutter代码中,确保和后端要求的格式一致。
- 如果
unitlist里的元素不是字符串类型,记得先转成字符串(比如unitId.toString())再添加到fields中。
内容的提问来源于stack exchange,提问作者Marzook
相关产品推荐
相关产品推荐

