// Automatic FlutterFlow imports import '/backend/schema/structs/index.dart'; import '/flutter_flow/flutter_flow_theme.dart'; import '/flutter_flow/flutter_flow_util.dart'; import 'index.dart'; // Imports other custom actions import '/flutter_flow/custom_functions.dart'; // Imports custom functions import 'package:flutter/material.dart'; // Begin custom action code // DO NOT REMOVE OR MODIFY THE CODE ABOVE! import 'dart:async'; import 'dart:convert'; import 'package:http/http.dart' as http; Future bestandUpload( FFUploadedFile file, String uploadUrl, String sessionName, String sessionId, String token, ) async { if (file.bytes == null || file.bytes!.isEmpty) { return {'success': false, 'error': 'Geen bestand geselecteerd'}; } final bestandsnaam = (file.name?.trim().isNotEmpty ?? false) ? file.name!.trim() : 'upload.jpg'; final base64Data = base64Encode(file.bytes!); final headers = { 'Accept': 'application/json', 'Content-Type': 'application/json', }; if (sessionName.trim().isNotEmpty && sessionId.trim().isNotEmpty) { headers['Cookie'] = '$sessionName=$sessionId'; } if (token.trim().isNotEmpty) { headers['X-CSRF-Token'] = token; } final body = jsonEncode({ 'bestandsnaam': bestandsnaam, 'base64_data': base64Data, }); print('========================================'); print('BESTAND UPLOAD'); print('URL : $uploadUrl'); print('Bestandsnaam: $bestandsnaam'); print('Bytes : ${file.bytes!.length}'); print('========================================'); try { final response = await http .post(Uri.parse(uploadUrl), headers: headers, body: body) .timeout(const Duration(seconds: 30)); print('========================================'); print('STATUS : ${response.statusCode}'); print('BODY'); print(response.body); print('========================================'); dynamic data; try { data = jsonDecode(response.body); } catch (_) { data = response.body; } if (response.statusCode >= 200 && response.statusCode < 300) { return { 'success': true, 'fid': data['fid']?.toString() ?? '', 'url': data['url']?.toString() ?? '', }; } return { 'success': false, 'statusCode': response.statusCode, 'error': data is Map ? (data['message'] ?? data.toString()) : data.toString(), }; } on TimeoutException { return {'success': false, 'error': 'Timeout'}; } catch (e, stack) { print(e); print(stack); return {'success': false, 'error': e.toString()}; } }