uploadMultiFile method

Future<Map<String, dynamic>?> uploadMultiFile({
  1. required String path,
  2. required List<File> files,
  3. required String fileParam,
  4. Map<String, dynamic>? data,
})

Implementation

Future<Map<String, dynamic>?> uploadMultiFile({required String path,
  required List<File> files, required String fileParam,
  Map<String, dynamic>? data,}) async {
  try {
    // Build multipart files list
    final multipartFiles = await Future.wait(
      files.map((file) async {
        final fileName = path_package.basename(file.path);
        return MultipartFile.fromFile(file.path, filename: fileName);
      }),
    );

    // Create FormData with the file
    FormData formData = FormData.fromMap({
      fileParam: multipartFiles,
      if (data != null) ...data, // Add any additional data if needed
    });

    String? token = await UFUtils.preferences.readAuthToken();

    // Send POST request with FormData
    Response response = await _dio.post(
      path,
      data: formData,
      options: Options(
        headers: {'Authorization': 'Bearer $token',
          "Content-Type": "multipart/form-data",
          "x-portal": "user"},
        extra: {"skipInterceptor": true},
      ),
    );

    return response.data;
  } catch (e) {
    rethrow;
  }
}