uploadFile<T> method

Future<T> uploadFile<T>(
  1. String path,
  2. String filePath, {
  3. String fieldName = 'file',
  4. Map<String, dynamic>? additionalData,
  5. ProgressCallback? onProgress,
})

Upload file with progress tracking

Implementation

Future<T> uploadFile<T>(
  String path,
  String filePath, {
  String fieldName = 'file',
  Map<String, dynamic>? additionalData,
  ProgressCallback? onProgress,
}) async {
  try {
    final formData = FormData.fromMap({
      fieldName: await MultipartFile.fromFile(filePath),
      ...?additionalData,
    });

    final response = await _dio.post<T>(
      path,
      data: formData,
      onSendProgress: onProgress,
    );

    return response.data!;
  } on DioException catch (e) {
    if (e.error is ProdobitException) {
      throw e.error! as ProdobitException;
    }
    rethrow;
  }
}