uploadImage method

Future<Map<String, dynamic>> uploadImage({
  1. required Uint8List imageBytes,
  2. required String fileName,
  3. required String token,
  4. required String uploadUrlSever,
})

Implementation

Future<Map<String, dynamic>> uploadImage({
  required Uint8List imageBytes,
  required String fileName,
  required String token,
  required String uploadUrlSever,
}) async {
  final url = Uri.parse("$uploadUrlSever/$token");

  final mimeType = lookupMimeType(fileName) ?? 'application/octet-stream';
  final mediaType = MediaType.parse(mimeType);

  final request = http.MultipartRequest("POST", url);

  request.files.add(
    http.MultipartFile.fromBytes(
      'file',
      imageBytes,
      filename: fileName,
      contentType: mediaType,
    ),
  );

  try {
    final streamedResponse = await request.send();
    final response = await http.Response.fromStream(streamedResponse);

    if (response.statusCode == 200) {
      final Map<String, dynamic> resJson = jsonDecode(response.body);
      final uploadUrl = resJson['url'];

      return {
        'success': true,
        'url': uploadUrl,
        'message': 'Image uploaded successfully.',
      };
    } else {
      return {
        'success': false,
        'url': null,
        'message': 'Upload failed: ${response.statusCode} - ${response.body}',
      };
    }
  } catch (e) {
    return {'success': false, 'url': null, 'message': 'Upload error: $e'};
  }
}