http - 在 Flutter 中使用 http.post 和注册表单上传图片?
问题描述
所以我想用一堆其他变量(字符串)将文件(图像)上传到服务器
字符串 firstname , lastname ,birthDay , phone , adresse ;文件图片;
return http.post(
uri,
headers: {
'Accept': 'application/json',
"Authorization": "Bearer $token",
},
body: body,
encoding: encoding,
);
Future<http.Response> postRegisteration() async {
return await api.httpPost('fotApp/master', body: {
'firstname': 'lorem',
'lastname': 'lorem',
'birthDay': 'lorem',
'adresse': 'lorem',
'phone': 'lorem',
'image': 'lorem'
}).then((reponse) {
var data = jsonDecode(reponse.body);
print(data);
});
}
解决方案
尝试这样的事情
在 fileList 中,您应该添加您想要上传的任何文件
List<MultipartFile> fileList = List();
fileList.add(MultipartFile.fromBytes(
'documents', await filePath.readAsBytes(),
filename: fileName));
对于其他部分参数,请使用 params map
Map<String, String> params = {
"first_name": widget.mUserDetailsInputmodel.firstName,
"last_name": widget.mUserDetailsInputmodel.lastName,
"email": widget.mUserDetailsInputmodel.emailAddress,
};
然后像这样发送请求
Future<String> multipartRequest({var url, var partParams, var files}) async {
Map<String, String> headers = {
"X-API-KEY": X_API_KEY,
"Accept": "application/json",
"User-Auth-Token": authToken };
var request = http.MultipartRequest("POST", Uri.parse(url));
request.headers.addAll(headers);
if (partParams != null) request.fields.addAll(partParams);// add part params if not null
if (files != null) request.files.addAll(files);// add files if not null
var response = await request.send();
var responseData = await response.stream.toBytes();
var responseString = String.fromCharCodes(responseData);
print("responseBody " + responseString);
if (response.statusCode == 200) return responseString;
}
推荐阅读
- wordpress - WooCommerce 产品库存重置为 0
- c++ - 修复 C++ VSCode 中的错误“未定义对“Class::Function”的引用
- tensorflow - 使用 conv2d 等的 python 函数复制 TFLite 模型层
- c# - 如何在 ac# 函数中设置超时?
- html - JQuery如何获取这个div的数量
- ckeditor - 如何在ckeditor5中显示/文本工具栏按钮
- regex - 如何用正则表达式对字符和数字求和?
- python - += 在这种情况下是什么意思?
- flutter - 如何在颤振中使用扩展
- azure-traffic-manager - Azure 前门 URL 重写