uploadMultiple<T> method

Future<T?> uploadMultiple<T>(
  1. String url, {
  2. required Map<String, String> files,
  3. Map<String, dynamic>? additionalFields,
  4. ProgressCallback? onProgress,
  5. CancelToken? cancelToken,
})
inherited

Upload multiple files using multipart/form-data.

url - The endpoint to upload files to. files - Map of field names to file paths. additionalFields - Optional additional form fields to include. onProgress - Optional callback for upload progress.

Example:

final result = await api.uploadMultiple<UploadResponse>(
  '/upload',
  files: {
    'avatar': '/path/to/avatar.jpg',
    'document': '/path/to/doc.pdf',
  },
  additionalFields: {'userId': '123'},
);

Implementation

Future<T?> uploadMultiple<T>(
  String url, {
  required Map<String, String> files,
  Map<String, dynamic>? additionalFields,
  ProgressCallback? onProgress,
  CancelToken? cancelToken,
}) async {
  final Map<String, dynamic> formMap = {...?additionalFields};

  for (final entry in files.entries) {
    formMap[entry.key] = await MultipartFile.fromFile(entry.value);
  }

  final formData = FormData.fromMap(formMap);

  return await network<T>(
    request: (request) => request.postUri(
      Uri.parse(url),
      data: formData,
      cancelToken: cancelToken,
      onSendProgress: onProgress,
    ),
  );
}