arrays - Flutter multipart/form-data 发送项目列表
问题描述
我使用包http
我的应用程序中有这种方法可以发送带有文件的发布请求。就我而言,我发送文件以及具有动态值的字段。我尝试发送List<String>
,但服务器(后端)向我返回错误消息:
The seedlings field must be an array.
示例seedlings
列表值:
List<String> seedlings = ['Apple', 'Banana'];
代码:
Future post(String path, data) async {
await _getToken();
var url = '${ApiConstants.BASE_URL}$path';
var uri = Uri.parse(url);
var request = MultipartRequest('POST', uri);
data.forEach((key, item) async {
if (item == null) return null;
if (item is File) {
request.files.add(await MultipartFile.fromPath(
'file',
item.path,
));
} else {
request.fields[key] = item is num
? item.toString()
: item is List
? item.toString()
: item;
}
});
request.headers['Content-type'] = 'application/json';
request.headers['Accept'] = 'application/json';
var response = await request.send();
}
在我的情况下,所有字段都发送到服务器,除了具有list
以下值的字段array
解决方案
我已经找到了一个答案,我已经在另一个类似的问题中发布了这个答案。我只是把代码片段放在这里。
final request = http.MultipartRequest('Post', uri);
List<String> ManageTagModel = ['xx', 'yy', 'zz'];
for (String item in ManageTagModel) {
request.files.add(http.MultipartFile.fromString('manage_tag_model', item));
}
基本上,您必须使用方法将列表添加为文件fromString()
。在这里找到原始答案 -
https://stackoverflow.com/a/66318541/7337717
推荐阅读
- tensorflow - AlreadyExistsError:已存在另一个同名指标。在 colab 中
- security - 他们是否有任何安全、强大的工具可用于执行芹菜任务的监控和通知警报?
- java - 将自定义 Confluence 插件从版本 5 升级到 7+
- android - 如何使用隐藏代码在两家公司之间共享应用程序开发?
- c - 凯撒加密但输出错误
- node.js - Mongoose.connect 未连接到本地数据库
- swiftui - 如何重新渲染 UI 以响应埋在嵌套类中的计算属性?
- javascript - getUserMedia 约束禁用我的相机
- javascript - 得到结果 Promise {
使用 d3.csv 异步函数后 - boost - 找不到Boost(缺少:python3)(找到版本“1.76.0”)-CMake Windows