bestand_upload.dart 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  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 ingevoerdeUrl = uploadUrl.trim();
  24. final apiBase = FFAppState().apiBaseUrl.trim().isEmpty
  25. ? 'https://uitgaanskrant.com'
  26. : FFAppState().apiBaseUrl.trim();
  27. uploadUrl = (ingevoerdeUrl.startsWith('http://') ||
  28. ingevoerdeUrl.startsWith('https://'))
  29. ? ingevoerdeUrl
  30. : apiBase +
  31. (ingevoerdeUrl.startsWith('/') ? ingevoerdeUrl : '/$ingevoerdeUrl');
  32. final bestandsnaam = (file.name?.trim().isNotEmpty ?? false)
  33. ? file.name!.trim()
  34. : 'upload.jpg';
  35. final base64Data = base64Encode(file.bytes!);
  36. final headers = <String, String>{
  37. 'Accept': 'application/json',
  38. 'Content-Type': 'application/json',
  39. };
  40. if (sessionName.trim().isNotEmpty && sessionId.trim().isNotEmpty) {
  41. headers['Cookie'] = '$sessionName=$sessionId';
  42. }
  43. if (token.trim().isNotEmpty) {
  44. headers['X-CSRF-Token'] = token;
  45. }
  46. final body = jsonEncode({
  47. 'bestandsnaam': bestandsnaam,
  48. 'base64_data': base64Data,
  49. });
  50. print('========================================');
  51. print('BESTAND UPLOAD');
  52. print('URL : $uploadUrl');
  53. print('Bestandsnaam: $bestandsnaam');
  54. print('Bytes : ${file.bytes!.length}');
  55. print('========================================');
  56. try {
  57. final response = await http
  58. .post(Uri.parse(uploadUrl), headers: headers, body: body)
  59. .timeout(const Duration(seconds: 30));
  60. print('========================================');
  61. print('STATUS : ${response.statusCode}');
  62. print('BODY');
  63. print(response.body);
  64. print('========================================');
  65. dynamic data;
  66. try {
  67. data = jsonDecode(response.body);
  68. } catch (_) {
  69. data = response.body;
  70. }
  71. if (response.statusCode >= 200 && response.statusCode < 300) {
  72. return {
  73. 'success': true,
  74. 'fid': data['fid']?.toString() ?? '',
  75. 'url': data['url']?.toString() ?? '',
  76. };
  77. }
  78. return {
  79. 'success': false,
  80. 'statusCode': response.statusCode,
  81. 'error':
  82. data is Map ? (data['message'] ?? data.toString()) : data.toString(),
  83. };
  84. } on TimeoutException {
  85. return {'success': false, 'error': 'Timeout'};
  86. } catch (e, stack) {
  87. print(e);
  88. print(stack);
  89. return {'success': false, 'error': e.toString()};
  90. }
  91. }