Неверный ввод полезной нагрузки запроса в запросе Flutter POST - PullRequest
0 голосов
/ 05 августа 2020

Я пытаюсь загрузить несколько файлов из своего мобильного приложения flutter. Вот мой скриншот с почтальоном. Это отлично работает на postMan. Но я получаю 400 ошибок в мобильном приложении flutter. Не могу понять, в чем проблема? enter image description here

введите описание изображения здесь

Вот код моей загрузки мобильного приложения flutter.

 if(images.length>0){
      for (int i = 0; i < images.length; i++) {
        var path = await FlutterAbsolutePath.getAbsolutePath(images[i].identifier);
        String fileName = path.split('/').last;
        var file = await MultipartFile.fromFile(path, filename:fileName);
        multipart.add(file);
      }

      FormData imageFormData = FormData.fromMap(
          {
            "feedId": value.id,
            "images": multipart,
            "userInformationsId": value.userInformationId
          });
      print(multipart.length);
      uploadFeedPicture(imageFormData);
  }

 Future<String> uploadFeedPicture(FormData _imageformData) async{

    String at = await _apiProvider.getAccessToken();
    Dio dio = new Dio();
   // dio.options.headers['accept'] = 'application/json';
  //  dio.options.headers["content-Type"] = "multipart/form-data";
    dio.options.headers["Authorization"] = "Bearer ${at}";
    dio.options.baseUrl = getBaseUrl();

    var _baseUrl = getBaseUrl();
     await dio.post('/api/feed/upload', data: _imageformData,  options: Options(
         followRedirects: false,
         validateStatus: (status) { return status < 500; }
     ), onSendProgress: (int sent, int total) {
      print("$sent $total");
    },).then((value) {
      print(value.data);

      print(value.headers);

    }
    ).catchError((error) => print(error) );




 }

И я получаю ответ.

{statusCode: 400, error: Bad Request, message: Invalid request payload input}

Пожалуйста, помогите мне в чем проблема? Я пытаюсь изменить тип содержимого, но не работает.

1 Ответ

0 голосов
/ 06 августа 2020

Перепробовав столько разных способов, я нашел решение. Вот он.

if(value.id != null){

    String at = await _apiProvider.getAccessToken();
    Map<String, String> headers = { "Authorization": "Bearer ${at}"};
    var uri = Uri.parse('$baseUrl/api/feed/upload');
    var  request = http.MultipartRequest('POST', uri);
    request.headers.addAll(headers);
    if(images.length>0){
      for (int i = 0; i < images.length; i++) {
        var path = await FlutterAbsolutePath.getAbsolutePath(images[i].identifier);
       // String fileName = path.split('/').last;

        var file = await MultipartFile.fromPath("images",path);

          request.files.add(file);
      }
      request..fields['feedId'] = value.id;
      request..fields['userInformationsId'] = value.userInformationId;


      var response = await request.send();
      if (response.statusCode == 200) {
        Navigator.pop(context);
        showSuccessToast("Posted succesfull");
        counter.update(0);
        Navigator.push(
          context,
          MaterialPageRoute(builder: (context) => HomePage()),
        );
      }else{
        showErrorToast("Upload image failed");
      }


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