Использование Http Post для загрузки текста в Flutter - PullRequest
0 голосов
/ 01 мая 2019

Я пытаюсь создать запрос http.post, который отправляет файл изображения вместе с текстом. Я думаю, что отправляю только частичный запрос на сервер, и его получение отклонено. Я пробовал это в MultiPartForm и в методе ниже

Я пытался создать запрос на публикацию, но я получаю эту ошибку: Необработанное исключение: тип '_File' не является подтипом типа 'String' в типе cast

void createPreferences(
    String phone,
    String nickName,
    String customerType,
    double age,
    File currentSelfie) {
  //Variables

  var uri = Uri.http('10.0.2.2:8000', '/api/customer/create_customer_details/', params);

  var params = {
    'access_token': _accessTkn,
  };


  final Map<dynamic, dynamic> custPreferences = {
    'phone': phone,
    'nick_name': nickName,
    'customer_type': customerType,
    'age': '${'age'}',
  };





     var request =  http.MultipartRequest("POST", uri,);
 var multipartFile = new http.MultipartFile('current_selfie', stream, length,
          filename: basename(currentSelfie.path));


  request.files.add(multipartFile);

      var response = await request.send();
      print(response.statusCode);
      response.stream.transform(utf8.decoder).listen((value) {
        print(value);
      });
    }


    final Map<String, dynamic> responseData = json.decode(response.body);
    print(responseData);
    print('Response body: ${response.body}');
  });
}

Я хочу создать этот запрос и убедиться, что данные приняты моим сервером.

1 Ответ

1 голос
/ 01 мая 2019

Что вы можете сделать, это преобразовать ваш файл (изображение) в base64 и загрузить его как строковый пример:

import 'dart:convert';

void createPreferences(
    String phone,
    String nickName,
    String customerType,
    double age,
    File currentSelfie) {
  //Variables

  var url = 'http://10.0.2.2:8000/api/create_customer_details/?';

  final Map<dynamic, dynamic> custPreferences = {
    'phone': phone,
    'nick_name': nickName,
    'customer_type': customerType,
    'age': '${'age'}',
    'current_selfie': base64Encode(currentSelfie.readAsBytesSync()),
    'access_token': _accessTkn,
  };



  http.post(url, body: custPreferences, headers: {
    "Content-Type": "application/x-www-form-urlencoded"
  }).then((http.Response response) {
    print(response);

    final Map<String, dynamic> responseData = json.decode(response.body);
    print(responseData);
    print('Response body: ${response.body}');
  });
}

Затем расшифруйте его на своем сервере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...