在 Flutter 中使用 http.post 和注册表单上传图片? [英] Upload image with http.post and registration form in Flutter?

查看:46
本文介绍了在 Flutter 中使用 http.post 和注册表单上传图片?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以我想用一堆其他变量(字符串)将文件(图像)上传到服务器

so i want to upload a File (image) to a server with a bunch of other variable (Strings)

字符串 firstname , lastname ,birthDay, phone , adresse ;文件图片;

String firstname , lastname , birthDay, phone , adresse ; File image;

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中,你应该添加任何你想上传的文件

In fileList, you should add any file you like to upload

    List<MultipartFile> fileList = List();
    fileList.add(MultipartFile.fromBytes(
        'documents', await filePath.readAsBytes(),
        filename: fileName));

其他部分参数使用params map

For other part parameters use 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;
  }

这篇关于在 Flutter 中使用 http.post 和注册表单上传图片?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆