如何将图像从 flutter 应用程序发送(或上传)到 Django 服务器,反之亦然?

问题描述 投票:0回答:1

我只想了解如何将图像从 flutter 应用程序(.jpg 或 .png 格式)上传到 Django 服务器,以便对图像进行分类并返回响应,以及如何在flutter 应用程序中的用户发出获取请求(我只想要指南)。

我还没有尝试,因为我不知道从哪里开始。

python django flutter django-rest-framework file-upload
1个回答
0
投票

使用

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
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.