Как отправить (или загрузить) изображения из приложения 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}');
}
}