Как отправить (или загрузить) изображения из приложения flutter на сервер Django и наоборот?

Мне нужна общая картина того, как загрузить изображение из приложения flutter (форматы .jpg или .png) на сервер Django, чтобы классифицировать его и вернуть ответ, а также как отправить сообщение с сервера, когда пользователь в приложении flutter делает запрос get (мне нужны только рекомендации).

Я еще не пробовал, потому что не знаю, с чего начать.

Используйте пакет image_picker, чтобы позволить пользователям выбирать изображение из галереи или камеры устройства.

Импортируйте пакет http и создайте объект MultipartFile из выбранного файла изображения.

import 'package:http/http.dart' as http;

Future<http.MultipartRequest> createMultipartRequest(String url, File image) async {
  final request = http.MultipartRequest(
    'POST',
    Uri.parse(url),
  );
  request.files.add(http.MultipartFile.fromPath('image', image.path));
  return request;
}

Используйте пакет http для отправки многокомпонентного запроса на конечную точку вашего Django-сервера. Обработайте ответ сервера (например, результат классификации изображений) и отобразите его в приложении Flutter.

Future<String?> uploadImage(String url, File image) async {


final request = await createMultipartRequest(url, image);
  final streamedResponse = await request.send();
  final response = await http.Response.fromStream(streamedResponse);

  if (response.statusCode == 200) {
    final responseData = jsonDecode(response.body); // Parse response if using JSON
    return responseData['classification_result']; // Example assuming JSON response
  } else {
    print('Error: ${response.reasonPhrase}');
    return null;
  }
}

// Usage
void onUploadButtonPressed() async {
  final imageFile = await pickImage();
  if (imageFile != null) {
    final result = await uploadImage('http://your-server-address/upload', imageFile);
    if (result != null) {
      // Display classification result (e.g., in a Text widget)
    } else {
      // Handle upload error
    }
  }
}

Чтобы загрузить изображение из приложения Flutter на сервер Django, вы можете выполнить следующие шаги:

import 'dart:io';
import 'package:http/http.dart' as http;

Future<void> uploadImage(File imageFile) async {
  var request = http.MultipartRequest(
      'POST', Uri.parse('http://your-django-server.com/upload_image_endpoint'));
  request.files.add(await http.MultipartFile.fromPath('image', imageFile.path));

  var response = await request.send();
  if (response.statusCode == 200) {
    print('Image uploaded successfully');
  } else {
    print('Failed to upload image: ${response.reasonPhrase}');
  }
}
Вернуться на верх