uploadFile method
Upload a file (document photo, selfie, etc.) to the backend.
Implementation
Future<Map<String, dynamic>> uploadFile({
required String stepName,
required String fieldName,
required List<int> fileBytes,
required String fileName,
}) async {
final url = Uri.parse(
'${config.baseUrl}/api/v1/sessions/${config.sessionId}/upload',
);
final request = http.MultipartRequest('POST', url)
..headers.addAll({'Authorization': 'Bearer ${config.sessionToken}'})
..fields['step'] = stepName
..files.add(http.MultipartFile.fromBytes(
fieldName,
fileBytes,
filename: fileName,
));
final streamedResponse = await _client.send(request);
final response = await http.Response.fromStream(streamedResponse);
if (response.statusCode != 200 && response.statusCode != 201) {
throw DataleonApiException(
'Failed to upload file for step $stepName',
statusCode: response.statusCode,
);
}
return jsonDecode(response.body) as Map<String, dynamic>;
}