uploadFile method

Future uploadFile(
  1. String filePath,
  2. Map<String, dynamic> form
)

Implementation

Future<dynamic> uploadFile(String filePath, Map<String, dynamic> form) async {
  try {
    var dio = di.Dio();
    dio.options.baseUrl = pluginConfig.atlasUrl;
    dio.options.connectTimeout = const Duration(seconds: 35000);
    dio.options.receiveTimeout = const Duration(seconds: 35000);
    dio.options.headers = await _getHeader();
    final mimeTypeData =
        lookupMimeType(filePath, headerBytes: [0xFF, 0xD8])?.split('/');

    return dio
        .post(key,
            data: di.FormData.fromMap({
              ...form,
              'image': await di.MultipartFile.fromFile(filePath,
                  contentType: MediaType(mimeTypeData![0], mimeTypeData[1])),
            }),
            options: di.Options(
                validateStatus: (_) => true,
                method: "POST",
                responseType: di.ResponseType.plain),
            onSendProgress: (int sent, int total) {})
        .then((response) {
      if (response.statusCode == 200) {
        return convert.jsonDecode(response.data.toString());
      }
      return convert.jsonDecode(response.data.toString());
    });
  } catch (ex) {
    return "failed";
  }
}