upload method
Uploads a file
Implementation
Future<FileInfo> upload(
Uint8List bytes,
String filename, {
String? mimeType,
String? bucket,
bool isPublic = false,
Map<String, dynamic>? metadata,
}) async {
final request = http.MultipartRequest('POST', Uri.parse('$baseUrl/upload'));
// Add headers
request.headers.addAll(_headers);
// Add file
request.files.add(http.MultipartFile.fromBytes(
'file',
bytes,
filename: filename,
contentType: mimeType != null
? http.MediaType.parse(mimeType)
: null,
));
// Add optional fields
if (bucket != null) {
request.fields['bucket'] = bucket;
}
request.fields['isPublic'] = isPublic.toString();
if (metadata != null) {
request.fields['metadata'] = jsonEncode(metadata);
}
final streamedResponse = await _client.send(request);
final response = await http.Response.fromStream(streamedResponse);
final data = _handleResponse(response);
final files = data['files'] as List?;
if (files == null || files.isEmpty) {
throw const VinculumException('Upload failed: no file returned');
}
return FileInfo.fromJson(files.first as Map<String, dynamic>);
}