Upload image with http.post and registration form in Flutter?

1,082

Try something like this

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));

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,
    };

Then send request somthing like this

  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;
  }

Share:
1,082
oth man
Author by

oth man

Specializing in flutter app and unity3d . with 2 years of experience , most experienced with android the skills that i can offer you : great app design flutter integration api webstie to app using flutter Game Design Game developement I provide 100% Support after the contact end

Updated on December 15, 2022

Comments

  • oth man
    oth man over 1 year

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

    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);
        });
    }