bestand_upload.dart 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. // Automatic FlutterFlow imports
  2. import '/backend/schema/structs/index.dart';
  3. import '/flutter_flow/flutter_flow_theme.dart';
  4. import '/flutter_flow/flutter_flow_util.dart';
  5. import 'index.dart'; // Imports other custom actions
  6. import '/flutter_flow/custom_functions.dart'; // Imports custom functions
  7. import 'package:flutter/material.dart';
  8. // Begin custom action code
  9. // DO NOT REMOVE OR MODIFY THE CODE ABOVE!
  10. import 'dart:async';
  11. import 'dart:convert';
  12. import 'package:http/http.dart' as http;
  13. Future<dynamic> bestandUpload(
  14. FFUploadedFile file,
  15. String uploadUrl,
  16. String sessionName,
  17. String sessionId,
  18. String token,
  19. ) async {
  20. if (file.bytes == null || file.bytes!.isEmpty) {
  21. return {'success': false, 'error': 'Geen bestand geselecteerd'};
  22. }
  23. final bestandsnaam = (file.name?.trim().isNotEmpty ?? false)
  24. ? file.name!.trim()
  25. : 'upload.jpg';
  26. final base64Data = base64Encode(file.bytes!);
  27. final headers = <String, String>{
  28. 'Accept': 'application/json',
  29. 'Content-Type': 'application/json',
  30. };
  31. if (sessionName.trim().isNotEmpty && sessionId.trim().isNotEmpty) {
  32. headers['Cookie'] = '$sessionName=$sessionId';
  33. }
  34. if (token.trim().isNotEmpty) {
  35. headers['X-CSRF-Token'] = token;
  36. }
  37. final body = jsonEncode({
  38. 'bestandsnaam': bestandsnaam,
  39. 'base64_data': base64Data,
  40. });
  41. print('========================================');
  42. print('BESTAND UPLOAD');
  43. print('URL : $uploadUrl');
  44. print('Bestandsnaam: $bestandsnaam');
  45. print('Bytes : ${file.bytes!.length}');
  46. print('========================================');
  47. try {
  48. final response = await http
  49. .post(Uri.parse(uploadUrl), headers: headers, body: body)
  50. .timeout(const Duration(seconds: 30));
  51. print('========================================');
  52. print('STATUS : ${response.statusCode}');
  53. print('BODY');
  54. print(response.body);
  55. print('========================================');
  56. dynamic data;
  57. try {
  58. data = jsonDecode(response.body);
  59. } catch (_) {
  60. data = response.body;
  61. }
  62. if (response.statusCode >= 200 && response.statusCode < 300) {
  63. return {
  64. 'success': true,
  65. 'fid': data['fid']?.toString() ?? '',
  66. 'url': data['url']?.toString() ?? '',
  67. };
  68. }
  69. return {
  70. 'success': false,
  71. 'statusCode': response.statusCode,
  72. 'error':
  73. data is Map ? (data['message'] ?? data.toString()) : data.toString(),
  74. };
  75. } on TimeoutException {
  76. return {'success': false, 'error': 'Timeout'};
  77. } catch (e, stack) {
  78. print(e);
  79. print(stack);
  80. return {'success': false, 'error': e.toString()};
  81. }
  82. }