uploadNewFile method

Future<Map<String, dynamic>> uploadNewFile(
  1. String url,
  2. Map<String, String> bodyMap,
  3. Map<String, String> headers,
  4. Map<String, File> fileMapping,
)

Implementation

Future<Map<String, dynamic>> uploadNewFile(
    String url,
    Map<String, String> bodyMap,
    Map<String, String> headers,
    Map<String, File> fileMapping) async {
  var uri = Uri.parse(url);
  var request = http.MultipartRequest(
    "POST",
    uri,
  );
  request.headers.addAll(headers);

  var keys = bodyMap.keys;
  for (var i = 0; i < bodyMap.length; i++) {
    var key = keys.elementAt(i);
    request.fields[key] = bodyMap[key]!;
  }

  var fileKeys = fileMapping.keys;
  for (var i = 0; i < fileMapping.length; i++) {
    var key = fileKeys.elementAt(i);
    var fileName = fileMapping[key]!.path.split("/").last;
    var fileExtension = fileName.split(".").last;
    var multFile = await http.MultipartFile.fromPath(
        key, fileMapping[key]!.path,
        filename: fileName, contentType: MediaType("image", fileExtension));

    request.files.add(multFile);
  }

  return request
      .send()
      .then((response) => response.stream.toBytes())
      .then((responseData) {
    var responseString = String.fromCharCodes(responseData);
    //Get the response from the server
    var jsonBody = jsonDecode(responseString);

    return jsonBody;
  });
}